Obsidian plugin · free · open source

Your quote silently goes stale. Nothing tells you.

You paste a quote, then later edit the source note. The link still resolves, so Obsidian shows all good, but the words you quoted no longer match. Cite Engine is the check for exactly that.

Live in the Obsidian community plugin directory · no account, no data leaves your vault
Cite Engine flagging a quote that no longer matches its source after the source note was edited
Edit the source, the block link still resolves, and Cite Engine flags the quote that quietly stopped matching.
The trap

The link checks the pointer, not the words

Block references resolve by id. Rename the note or reword the passage and the link still works. The quote you typed next to it is a frozen copy that never updates, and nothing flags the mismatch. Your link is green while your quote is wrong.

In your draft
"What is the area within which the subject—a person or group of persons—is or should be left to do or be what he is able to do or be, without interference by other persons?" [[berlin-1969-four-essays#^blk-2k9|p. 121]]
Status
Link resolves ✓ all good  ·  Quote vs source ✗ no longer matches  DRIFT

Native Obsidian shows the first line only. Cite Engine catches the second.

Quote: Isaiah Berlin, Four Essays on Liberty, p. 121 (shown verbatim, since fidelity is the whole point).

How it works

Three commands. No model touches the citation.

Deterministic on the part that has to be true. Nothing is summarized, nothing is invented, and your prose is never rewritten. It just tells you which quotes to look at.

1

Stamp source

Gives a clipped note a stable citekey and a block id on every passage. Idempotent.

2

Cite a passage

Fuzzy-pick a real passage and insert a live block-ref citation. There is no free-text path, so you cannot cite something that doesn't exist.

3

Integrity check

Scans the note and flags any citation that no longer resolves, and any quote that has drifted from its source. Drops them in a review list.

Get it

Free, client-side, yours

The whole citation and drift core runs locally. No backend, no account, no data leaves your vault. Works alongside Zotero and the Web Clipper.

Coming next · paid

Copilot writes your draft. Cite Engine makes its citations unfakeable.

Bring your own AI. The paid layer takes any draft you already have, including one written by Copilot or ChatGPT, and checks every citation against your own sources. Anything that doesn't resolve to a real verbatim passage in your vault gets flagged as unsupported, never passed off as real. You get an exportable integrity report you can stand behind before you submit.

We are the validator, not a second writer. Keep the tools you already pay for, and we guarantee the sourcing.

Join the waitlist

Two questions: would you pay to certify your citations before you submit, and would you pay us to check an AI's output against your own sources.

Privacy is the deal, not a footnote. Opt-in only, never required for the free core. Transient processing, no training on your notes, explicit retention and deletion. A bring-your-own-key path is planned for the strictest setups.
Related questions

Quotes, citations, and Obsidian

Do block references break in Obsidian when you edit a note?

Rarely. The block id is stable, so the link keeps resolving even after a rename. The failure people actually hit is the opposite: the link works but the quoted words changed. More on quotes going out of sync →

What's the best Obsidian plugin for citations?

Zotero plus an integration plugin for the bibliography, and a quote-integrity tool like Cite Engine for catching stale quotes. They solve different halves. The full rundown → · Zotero + Obsidian workflow →

Is there a quick way to check one quote without installing anything?

Yes. Paste the quote and the source into the free Quote Checker and it tells you instantly if they still match, word for word. Runs in your browser, nothing uploaded.

Does Cite Engine replace Zotero?

No. Zotero manages your references. Cite Engine checks that a quote you already pasted still matches its source after edits. Use both.