Word-Smith

approved

by sadsnake1

The Ultimate Distraction-free Writing Suite - This plugin has not been manually reviewed by Obsidian staff.

4 stars559 downloadsUpdated 6d agoMIT

Word-Smith

A distraction-free writing suite for Obsidian. Zen mode, letterbox masks, typewriter scrolling, a write-forward lock, syntax colouring, prose checks, smart typography, a status bar you build yourself, and a record of how much you write each day.

Everything is separate, and everything can be switched off on its own.

Showcase

1 3 33

What it does

Zen clears everything away but your words — tabs, headers, ribbon, sidebars, and optionally every other pane. Press Escape to come back.

Letter box dims the top and bottom of the screen so you only see what you're working on. Drag the edge to resize it, drag the arrows to change the inset. It stands down in reading view.

Typewriter keeps the line you're writing in the middle of the screen. It can tint that line and fade everything outside the paragraph or sentence you're in.

Hemingway blocks the keys you'd use to go back and fiddle, so a first draft can only move forward. Every lock is separate — backspace, undo, cut, paste, arrows, clicks. A blocked key can flash the screen, the bar, a badge, or nothing.

Retro bar replaces Obsidian's status bar with one to three rows you compose yourself. More on this below.

Syntax gives nouns, verbs, adjectives, adverbs and conjunctions their own colour, and can mute everything else so one class carries the sentence.

Prose checks mark seven patterns worth a second look: filler words, passive voice, doubled words, commonly confused pairs, vague pronouns, sentence rhythm, and repeated uncommon words.

Both of those run entirely on your machine, and both are guesswork — a mark is a nudge, not a verdict.

Text options cap the line length, indent paragraphs, adjust line spacing, justify text, and show the spaces and line breaks you normally can't see.

Typography turns what you type into the proper characters as you go: curly quotes, ellipses, en and em dashes, arrows, fractions. Never inside code, maths or frontmatter, and undo gives back exactly what you typed.

Goals and History are below.

Where it applies

Limit Word-Smith to certain folders and notes — only these, or everywhere except these. Leave the list empty and it applies everywhere.

A single note can override all of it from its frontmatter:

---
wordsmith: off        # ignore this note entirely
ws-zen: true          # or override one thing at a time
ws-typewriter: false
ws-hemingway: true
ws-syntax: true
ws-markers: false
ws-typography: false
ws-font: Literata     # font for this note only
ws-goal: 2000         # word target for this note
---

Open a canvas, a PDF or an empty tab and the bar stands down and Obsidian's own chrome comes back. It all returns the moment you're on a note again.

The retro bar

A bar at the bottom sized to match your note, not the window. One to three rows, each with a left, centre and right slot, each taking any mix of tokens.

Six bars ship with it — Mash, Plain, DOS, Zero, Echo and Slant. Save your own as a preset, and turn any preset into a share code you can send to someone else.

Readouts

{file}The note's name, or its folders too
{words} {chars}How much is in the note, or in your selection
{ln:col} {paragraph}Where the cursor is; which paragraph of how many
{readtime}How long the note takes to read
{backlinks}How many other notes link here
{time} {clock}The time, written out or drawn as a dial
{dd} {mm} {yyyy} {yy}Date parts — join them however you like
{battery} {caps} {num}Battery; CAPS and NUM, which show only when they're on
{vim} {mode}Which vim mode you're in; badges for T, H and Z
{obsidian}A small Obsidian crystal, in whatever colour the segment is

Where you are in the note

{#} {##} {###}The heading above your cursor, at that level
{####} {#####} {######}And the three deeper ones
{#>}The whole path: Chapter 3 › The Ferry › Beat 2

Each heading clears the ones below it, so you always get one path down the note — land under a chapter with no scenes and the scene slot goes empty rather than showing the last chapter's.

Buttons

Click these. They're never dropped when the bar runs out of room.

{syntax} {prose} {markers} {font} — pickers for word classes, prose checks, hidden characters, and your font.

{report} — the writing report. {history} — your writing history.

Spacers and dividers

{s}, {ss}, {sss}… is a quarter-space each. Give one a colour and it becomes a solid sliver instead.

Turn powerline on and the punctuation between tokens becomes shape — the character you type is the shape you get:

> <arrow
|straight
) (curve
~wave
/ \the two slanted cuts

Write \| for a real pipe. At the very start or end of a row, < and > also point the end cap outwards.

Dividers are drawn as SVG, so nothing needs a patched font.

Colour

Seven backgrounds and four text colours, each with a dark and a light version.

{words}:NBackground colour N
{words}:N;MAnd text colour M
{words};vim {ln:col}:vimText, or background, follows your vim mode
{file}:b1 {file}:b2Your theme's page and panel colours
{file};t1 {file};t2Your theme's normal and faded text

Leave the ; off and the text picks itself, light or dark, so it stays readable on whatever background you chose.

The bar itself takes the same grammar at the very start of row 1's left slot:

:vim {vim} > {file} :: {ln:col}

{g} is a fade — a colour stepping into the next, or out into the bar at a group's end. One step per token, so {g}{g}{g} is three narrow ones and {ggg} is one wide one. Put dividers between them and they keep their shape:

{file}:3 > {g}>{g}>{g} > {words}:5

Inside a segment, :: is a short thin line and >> << are tall chevrons, both in that segment's own colour.

All of this is also in the plugin, under How to write a row in the Retro Bar tab.

Sizing

Row height, font size, padding and edge rules are all configurable. The bar's text can instead match your note's own size, so it follows Ctrl+scroll zoom.

When the window narrows it sheds content in a fixed order rather than wrapping: the file path shortens first, then readouts drop from the edges inward. Buttons always survive.

Goals

Give a note or a folder a word count to aim for.

Folder goals nest. A folder goal counts everything inside it, however deep — so a book laid out as folders inside folders can carry a target at every level:

My Book/                              90,000
My Book/Part One/                     30,000
My Book/Part One/Ch 03/                4,000
My Book/Part One/Ch 03/Scene 2.md        900

Goals follow your files. Rename a note or drag a folder somewhere else and its target goes along, with everything nested inside it.

Progress shows as a gauge in the report, and the bar's edges pulse green when you cross a target.

Writing report

{report} opens a panel with two tabs — this note, and its folder — each showing words, characters, syllables, sentences, paragraphs, pages, read time and a reading grade. Every figure explains itself when you hover it.

The Folder tab has a breadcrumb of every folder above the note, up to the vault root. Click any of them to total that level instead, so how long is this chapter and will the book land are one click apart.

Hit a target and it throws fireworks at you.

Writing history

Off until you switch it on, under Settings → Word-Smith → History.

Once it's on, Word-Smith counts how much you write each day and draws it as one chart at three zooms — Day, Month, Year. Words you added rise from the centre line and words you cut fall from it, so a hard day of editing shows as work rather than a gap. Above it: total words, your daily average, your best day, and your current streak.

Search it. Type a note or folder name and the whole window scopes to it — figures, chart, streak. ch3scene will find My Book/Part One/Ch 03/Scene 2.md.

Two things the numbers mean: a day counts if you wrote or cut, so a day spent cutting won't break your streak; and the daily average divides by the days you actually wrote, so days off don't drag it down.

Your history is an ordinary note in your vault — a table, one row per day:

| Date | Added | Deleted | Net |
| --- | ---: | ---: | ---: |
| 2026-08-01 | 912 | 142 | 770 |

Move it, rename it, keep it beside the manuscript — Word-Smith finds it again by the markers inside it. Anything you write outside those markers is left alone. It saves itself when you pause and when you close Obsidian. It's the only copy, so hang on to it.

Nothing before the day you switch it on can be worked out. A file only knows when it was touched, not how much went into it.

Never counted

Goals and History share one list of notes and folders to leave out of your totals — an outline, a research folder, a scratch file. Word-Smith still works in them normally; they just don't count.

Commands

Toggle Word-Smith on/offThe master switch, also the "WS" ribbon badge
Toggle zen mode
Toggle letter box mode
Toggle typewriter mode
Toggle Hemingway mode
Toggle syntax highlighting
Toggle prose checks
Toggle the retro bar on/offSlides it away without switching it off
Cycle retrobar presetsSteps through your saved bars
Show the text report
Show the writing history

Everything else is in the settings tabs, or on the bar itself.

Right-to-left

If Obsidian or the note is right-to-left, the text options mirror: indents and padding follow the text direction, justified text sets its last line to the right, and the markers point the other way. Word counting already handles Hebrew, Arabic and Persian.

Syntax colouring and prose checks are English-only. In a right-to-left script they mark nothing, rather than marking it wrongly.

Installation

  1. Download main.js, styles.css and manifest.json.
  2. Put them in .obsidian/plugins/word-smith/ in your vault.
  3. Reload Obsidian, then enable Word-Smith under Settings → Community plugins.

Copy all three when you update, not just main.js — the plugin checks they match and warns you at startup if they don't.

Privacy

Word-Smith is fully local. No network calls of any kind — no fetch, no XMLHttpRequest, no WebSocket, no requestUrl. No telemetry. No third-party dependencies. No filesystem access outside Obsidian's own API.

What it reads: your note's text, in memory, while the note is open — for word counts, colouring and paragraph detection. It's read from the editor and discarded. The report also reads the notes in a folder when you open that tab, to total them.

What it stores:

data.json, in the plugin's own folder — your settings, your saved bars, your word targets. With the history on it also keeps each note's last word count, so a save can be turned into a difference. That cache rebuilds itself and can be deleted freely.

Your history file, only if you switch the history on. It's a note in your vault holding one row per day: the date, and how many words you added, cut and netted. If Remember which notes is on it also records which note each day's words happened in, so you can search your history — that's the one part of the record that isn't purely a number. Switch it off and those names are dropped. Counts only, either way: never a word of what you wrote.

Nothing else, anywhere.

Don't take my word for it:

grep -nE "fetch\(|XMLHttpRequest|WebSocket|requestUrl|sendBeacon" main.js

That returns nothing.

How syntax highlighting works

A hand-written part-of-speech tagger. No API, no model, no bundled NLP library. Each visible line is tagged in three passes.

Lexicon — about 800 words that suffix rules can't be trusted with: determiners, pronouns, prepositions, auxiliaries, irregular verbs, and common words that would otherwise be mis-tagged.

Suffix rules — anything not in the lexicon is guessed from its ending, in order of reliability:

EndingTag
-lyadverbminus ~90 exceptions — family, reply, early
-ing -edverb
-estadjective
-tion -ment -ness -ity -ismnoun
-ous -ful -less -ive -ableadjective
-ize -ate -ifyverb
-snoun or verbdepending on whether the singular is a known verb

Context — the pass that fixes what the first two get wrong, using the words either side:

  • After a determiner or preposition, a verb becomes a noun — the work, in place.
  • An unknown word between a determiner and a noun is an adjective — her difficult book.
  • After to, a candidate becomes an infinitive — to write.
  • A sentence-initial word followed by a determiner is an imperative — Check the file.

Results are drawn as CodeMirror decorations, so they render in the editor's own pipeline and never flicker while you type.

Articles and possessive determiners are deliberately left uncoloured — highlighting adjectives shouldn't light up every the, a and her. Pronouns count as nouns, prepositions as conjunctions.

Accuracy is roughly nine words in ten on ordinary prose, in my own testing — not benchmarked against a tagged corpus. It's weakest on dialogue-heavy fiction, sentence fragments, and unusual proper nouns. That's why it's a writing aid and not a grammar checker.

Performance: only the lines on screen are tagged, and code, frontmatter and maths are skipped. About 2ms per repaint on a 110,000-word note.

Feedback

Found a bug or have an idea? Open an issue.

Pricing

Word-Smith is free.

If you'd like to support it, you're welcome to buy me a coffee. Cheers!

Buy Me a Coffee

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.