yunmin125 downloadsTrack reading progress in a sidebar panel with a heading outline, a density rail, and per-file resume positions.
Track reading progress in the sidebar, with a heading outline, a density rail, and per-file resume positions.
Reading Rail Sidebar puts everything you need to know about where you are in a long note into one panel on the right, and lets you get back to that spot later.

n / total as you move through it.Along the right edge of the reading view there is a column of short ticks. It replaces the native scrollbar (which the plugin hides) and carries more meaning than one: each tick's length reflects how text-dense that part of the document is.
Dense stretches — long paragraphs, tables, code — grow into peaks, mirroring the heat-curve you'd see under a video player's progress bar. Sparse stretches stay short. Length combines local peaks with a fixed density scale, so an overall dense note is visibly longer than an overall sparse note. The curve is Gaussian-smoothed, so peaks rise and fall gradually instead of stepping.
Tick thickness is uniform; only length varies. The tick you are currently reading is highlighted.
Interaction: drag anywhere on the rail to scrub, or click a spot to jump there. It behaves like the scrollbar you replaced. The rail works in edit view too, following the same document.
Obsidian's built-in outline tells you the structure; the scrollbar tells you a percentage. Neither tells you where the reading got dense — which is usually exactly the part you were in the middle of, and exactly the part you can't find again next session.
Headings come from Obsidian's metadataCache.getFileCache(). Scrolling and the
rail use the active Markdown view's edit or preview container; these view
adapters depend on Obsidian's DOM and may need maintenance after app updates.
Density is measured from the rendered blocks at paint time and cached per file.
Open the panel from the ribbon icon or the palette:
| Command | What it does |
|---|---|
| Open rail panel | Open the sidebar panel |
| Toggle rail panel | Open or close it |
| Jump to last position | Return to where you stopped in this note |
Settings cover the heading depth shown, whether to display the progress block, and whether to remember reading position per file.
Community plugins: search for "Reading Rail Sidebar" in Settings → Community plugins.
Manual:
main.js, manifest.json and styles.css from the
latest release.<vault>/.obsidian/plugins/reading-rail-sidebar/.Beta builds: add yunmin311/reading-rail-sidebar-obsidian to
BRAT.
The settings page, the panel itself, command names, the view title and every
notice are available in Chinese and English. Pick a language at the top of
the settings page: Auto follows Obsidian's own language, or pin it to
简体中文 / English explicitly.
To add another language, add an entry in locales.js, then regenerate the
inlined companion modules in main.js before packaging. The installed plugin
loads the translations from that self-contained file.
No network access. No telemetry. No accounts. Reading positions are stored
locally in the plugin's data.json, keyed by note path — they never leave your
machine.
把「阅读进度 + 标题导航 + 按文件记忆位置」做成右侧栏面板:进度百分比、当前标题跟随、 标题树点击跳转,以及下次打开时一键跳回上次读到的地方。
右侧那条刻度用长度反映正文的文本密度 —— 长段落、表格、代码这些密集处会鼓成峰, 像视频进度条底下的热度曲线;疏的地方保持短。曲线经高斯平滑,有起伏过渡而非突变。 长度同时参考一条固定密度标尺,所以整篇密集的笔记也会比整篇稀疏的笔记更长, 不再只比较同一篇内部的峰谷。阅读模式和编辑模式都显示刻度。 刻度粗细统一,只有长度变化。可在刻度条上拖动或点击来定位。
安装:在社区插件里搜 "Reading Rail Sidebar",或从 Release 下载三个文件放进
.obsidian/plugins/reading-rail-sidebar/。