1rst row of tables always visible when scrolling?

Hello everyone,

What I’m trying to do

I am searching a way to keep the first row of tables always visible when scrolling to the bottom of tables.

It will make easier to complete large tables when adding a new line at the end of a table and to read the last lines of larger table.

Things I have tried

I found lot of example using css property “Sticky” applied on table header (like the following css code), but I cannot managed to make it work inside a css snippet (even with I specify !important property).

table {
  border-collapse: separate;
  border-spacing: 0;

th {
  position: sticky;
  top: 0;

Does anyone already tried to do something similar, or has any clue what I missed ?

I’m not sure this is the case for you, but I do know that Obsidian is actively only loading parts of longer documents related to what is visible or not. This mean that if you table header is a portion of your document Obsidian believes is not visible, it’s removed from memory. This also means that it can as sticky as it likes, but if it’s not loaded it’ll not show.

One possible workaround could possibly be to insert your table headers into the table every now and then. How is you table defined? Is it dynamic from a query, or have you written it all manually so that it’s a static table? If a query, what kind of a query are you using? (In some cases, it might be possible to add these extra rows as part of the query, or post-processing of the result)

1 Like

Hi, thank you for your answer Holroy.

Basically, my tables are static ones that I populate manually (I used yable to make comparaison for a purchase, choosing an app, legal regime like company status for my work, etc).

I did not know that Obsidian only loads visible parts and that could explain a lot.

A workaround I found so far was to split note vertically to have the header always visible when I want to add or edit a row at the end of the table.

Another possibility is to use the awesome plugin DataLoom that has sticky header and filters options. It works great except but line breaks added in cells avoid a suitable export of the table It implies to correct the markdown code proposed by the export feature. It is not insurmountable but not very convenient when the purpose is to regularly export an updated version to share it on Obsidian Publish for example.

I did not think about recopying the header as a reminder in the middle of the table, but it’s also an interesting workaround easy to implement, thank you !

1 Like

For those who are using Dataloom to work on large table and have the issue I mentionned on export (cf. line break in cell avoiding a proper export of the Loom table), I just found a solution : instead of doing shift + enter to add line break in a dataloom table, rather add a br tag :


This should resolve the export issue of the loom table into a markdown format. :slightly_smiling_face:

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.