Markdown notes, in your own GitHub repo

Notes that outlive
the app that made them

A full Markdown workspace — linked notes, offline search, a visual diagram studio, real version history — whose database is a GitHub repository you already own. Nothing is stored on our servers, and there is no ForkLeaf database to be locked out of.

Free forever · No card, no trial · exactly what GitHub access this asks for

Rich text, split, or raw Markdown — the same file either way.

How it works

From a keystroke to a commit you own

Four steps, none of which you have to think about. The middle two are the ones other notes apps replace with a database.

  1. 01

    You type.

    Plain Markdown, in a rich editor or in the raw source — the same file either way. It is written to your device before you have finished the word.

  2. 02

    It is a file.

    Not a row in someone's database. A .md file, in a folder you named, in a repository you already have. Anything that reads Markdown can read it.

  3. 03

    It becomes a commit.

    Edits are batched into atomic commits and pushed for you. Close the laptop mid-sentence, fly somewhere, keep writing — it catches up when you land.

  4. 04

    And it stays yours.

    Real history in a real repository. Clone it, revert it, or walk away with all of it — there is no export step, because there was never an import step.

Features

Built like a text editor, not like a database with a text box

Plain files, plain git, plain exports — and the linking, search, diagramming, reviewing and running that a real notebook needs. Everything below is in the repository today, not on a roadmap.

Links that make it a knowledge base

[[Wikilinks]] in the Obsidian dialect, with a backlinks panel that quotes the line each link was written on. Link to a note you have not written yet and clicking it writes it.

Meeting notes

Blocked until [[Q3 roadmap]] lands, then start [[Hiring plan]].

2 notes link here

Meeting notes

Blocked until [[Q3 roadmap]] lands…

Planning

Blocked until [[Q3 roadmap]] lands…

Search that reads the notes

Every word of every note, ranked with BM25 and answered in the browser. Results quote the line that matched.

⌕ migration

Hiring plan

…to keep the migration off my desk.

Platform notes

…the migration runs in two phases…

Three editors, one file

Rich-text blocks, a split view, or raw source. Switch per note; the Markdown on disk is identical either way.

Rich

Split

Source

Diagrams without the syntax

A visual Mermaid builder for six diagram types, with templates, a cheatsheet and live rendering. Node positions round-trip through the file.

DraftPRMergedRevise

Opens the .md files on your computer

Install it and ForkLeaf registers as a Markdown editor: double-click a file, or run xdg-open, and ⌘S writes that file — not a copy in Downloads.

$ xdg-open notes/q3-roadmap.md
Open in ForkLeaf — ⌘S writes q3-roadmap.md

Offline by default

Writes hit IndexedDB first. The sync queue drains when you reconnect, and tells you plainly what is saved where.

  • sync-engine.mdpushed
  • storage.mdqueued
  • 2026-08-14.mdqueued

Real conflict resolution

Edit the same note on your phone and your laptop and ForkLeaf shows you both versions instead of silently picking one.

This device

GitHub

Publish to a public link

One self-contained page, committed to your own repo and served by GitHub Pages. Nothing on our servers, and unpublishing is a deleted file.

Published

you.github.io/notes/q3-roadmap.html

A file in your repo, served by GitHub.

Export that keeps the diagrams

Markdown, HTML, Word and PDF — all rendered in the browser, so the note never leaves your machine to become a file.

.md.pdf.html.docx.txt

The code in your notes actually runs

Give a fenced block a language and it gets a Run button. bash, Python and JavaScript execute in a throwaway VM, and the output is written into the note underneath — committed with it, replaced on the next run, and kept in the history like anything else.

pythonRun

print("hello world")

— ran 2026-08-27 11:09 UTC · ok · 34ms

hello world

Sources that survive link rot

Paste an address and ForkLeaf writes the citation: the page's real title, plus a Wayback archive of it. The link still means something after the site is sold.

https://example.com/post

[The post’s real title](https://example.com/post)

archived copy · web.archive.org

Notes that say when they have gone off

Version numbers, dates, CVEs and linked files that have moved on since you last touched the note. It never claims a note is wrong — only that it is worth re-reading, and always why.

Deploy runbook

Worth re-reading — mentions v14 · 8 months untouched

How I think about scope

Never stale — nothing datable in it

Review a note like code

Propose changes to a repository you cannot push to and ForkLeaf opens a real pull request. Read a PR as rendered notes rather than a diff, see who wrote each line, and watch the diagrams change shape between two commits.

Pull request #42

Update the deploy runbook

notes:you/patch-1 → main

Who wrote this line

you · 2 days ago

priya · last month

The toolkit

Everything it does, in one list

Not a roadmap. Every row below is shipping in the repository today, and works whether or not you have signed in — the GitHub half simply adds the history.

Write

Three editors over one file

Rich-text blocks, a live split view, or the raw Markdown. Switch per note — the bytes on disk are identical either way.

Read the docs →
  • Rich-text modeBlocks, a toolbar, and a bubble menu on selection
  • Split modeSource and preview side by side, on a draggable divider
  • Source modeCodeMirror with syntax highlighting and line numbers
  • Slash commandsType / for headings, lists, tables, code, diagrams
  • Markdown shortcuts# ␣, - ␣, > ␣, ``` ␣ and the rest, as you type
  • ImagesPaste, drop or upload — committed alongside the note
  • PropertiesTitle, tags and custom fields, stored as YAML front matter
  • Runnable code blocksRun a shell, Python or JavaScript block; the output lands under it, stamped
  • Tabs & outlineSeveral notes open at once, with headings and stats

Connect

A notebook, not a pile of files

Links, backlinks and search turn a folder of Markdown into something you can actually think in.

Read the docs →
  • [[Wikilinks]]The Obsidian dialect, with autocomplete
  • Backlinks panelQuotes the line each inbound link was written on
  • Link to nothingClicking a link to a note you have not written writes it
  • Full-text searchEvery word of every note, ranked with BM25, in-browser
  • TagsFilter the library by anything in the front matter
  • Web sources, archivedCapture a page as a citation, with a Wayback copy that outlives the link
  • Folders & treeReal directories in the repository, renamed in place
  • Command palette⌘K to jump to any note or run any command

Diagram

Mermaid, without learning Mermaid

A visual builder sits on top of the syntax. Drag nodes, edit labels, and the file underneath stays plain Markdown.

Read the docs →
  • Visual builderAdd, connect and drag nodes without typing syntax
  • 14 templatesFlowchart, sequence, class, state, ER, Gantt, mindmap…
  • Live renderingThe diagram redraws as the source changes
  • Source editorAutocomplete and error messages that point at the line
  • Positions persistNode coordinates round-trip through the file itself
  • Renders everywhereIt is a ```mermaid block — GitHub draws it too

Sync

Git, doing the part git is good at

Writes hit your device first and drain to GitHub as atomic commits. Close the laptop mid-sentence; it catches up when you land.

Read the docs →
  • Any repo you can push toNew, existing, private, or somebody else's fork
  • Offline-firstIndexedDB first, network second — always in that order
  • Atomic commitsA burst of edits becomes one clean commit, not forty
  • Full historyEvery version of every note, with diffs, in the app
  • Line-by-line blameWhich commit wrote each paragraph, how old it is, and what it said before
  • BranchesSwitch the branch you are writing on from the status bar
  • ConflictsBoth versions shown side by side — never a silent overwrite
  • Propose changesOpen a pull request against a repo you cannot push to

Ship

Getting it back out again

Every export is rendered in your browser. The note never leaves your machine in order to become a file.

Read the docs →
  • PDFTypeset for print, diagrams included
  • Word (.docx)Real headings and lists, not an image of a document
  • HTMLOne self-contained file, nothing to host
  • Markdown, text, JSONThe source, stripped, or with stats and properties
  • Export the workspaceEvery note at once, not one file at a time
  • PublishA public page committed to your repo, served by GitHub Pages
  • Opens local .md filesDouble-click a file on your desktop; ⌘S writes it back

Where this fits

Every other notes app is a rented room. This one is a deed.

You already have somewhere to put notes, so here is the honest case for moving — first against the categories, then against the products by name.

First by category — the three things you already have open, what each is genuinely good at, and the specific thing ForkLeaf does differently.

A hosted notes app

Beautiful, syncs everywhere, and someone else runs it.

The catch

Your writing lives in their database, in their format, behind their pricing. The export button is a promise you cannot test until you need it.

With ForkLeaf

Your notes are already plain files in your own repository. There is no export, because there was never an import.

A local folder of Markdown

Genuinely yours, fast, and nothing can take it away.

The catch

It is one folder on one machine. Syncing it, versioning it and reading it on your phone are three problems you now own.

With ForkLeaf

The same plain files, with git doing the syncing and the history, and a real editor on every device with a browser.

Editing Markdown on GitHub

The storage is already right — it is the repository itself.

The catch

No links between notes, no search worth the name, no diagrams you can see, and nothing at all when the train goes into a tunnel.

With ForkLeaf

Wikilinks, backlinks, full-text search, a visual diagram builder, and an editor that keeps working offline.

It is probably for you if…

Engineers who already live in git
Your notes end up in the same place as your code, reviewed with the same tools, and `git log` finally covers your thinking as well as your commits.
Anyone who has been burned by a shutdown
The failure mode of ForkLeaf disappearing is that you keep a repository full of Markdown files. That is the whole disaster.
People writing documentation in the open
The notes and the docs are the same files. Propose a change as a pull request; publish a page straight to GitHub Pages.
Anyone who thinks in diagrams
A Mermaid studio that does not make you learn Mermaid first — and the output renders on GitHub, in your README, everywhere.

And by name

Nine questions to ask before you put a decade of thinking somewhere. Notion, OneNote, Obsidian and Evernote answer them too — these are their answers, not ours about them.

How ForkLeaf compares with Notion, OneNote, Obsidian and Evernote
QuestionForkLeafNotionOneNoteObsidianEvernote
Where a note ends upThe thing everything else follows from.A .md file in a GitHub repository you ownA row in Notion's database, on Notion's serversA .one notebook in OneDriveA .md file in a folder on that deviceA note in Evernote's cloud
FormatMarkdown — readable in any editor, for everBlocks. Markdown export exists and loses thingsA proprietary binary formatMarkdownENEX, an XML format only Evernote writes
HistoryEvery save is a git commit — diffs, blame, revertPage history, on paid plans, for a limited windowRecent versions, per pageNothing built in; a plugin or git of your ownNote history on paid plans
Syncgit push, to a repository you already pay nothing forTheirs, included, and requiredOneDrive, includedA paid add-on, or a folder-sync tool you wire upTheirs, limited on the free tier
OfflineFully — edits queue locally and push when you reconnectPartial, and not something to rely onYesYes — it is a local appPartial, on paid plans
DiagramsA Mermaid studio; the diagram renders on GitHub as wellMermaid in code blocksFreehand drawing and shapesMermaid, plus pluginsSketches
CollaborationPull requests and review — proposed, discussed, then mergedLive multiplayer editing — genuinely excellentShared notebooksA paid add-on, or noneShared notes
If the company disappearsNothing happens. The notes were never hereYou have whatever you exported before it happenedFiles in OneDrive, in a format only OneNote readsYou still have your folder — same answer, and a good oneYou have an ENEX file to find a converter for
PriceFree, open source, and no account to closeFree tier, then per person per monthFree with a Microsoft accountFree for personal use; sync and publish cost extraFree tier with limits, then paid

The file is the product

Everywhere else the file is an export — a lossy copy you make when you are already leaving. Here it is the original, written the moment you stop typing, readable by every tool that has ever opened a text file.

History you did not have to buy

Not a version panel with a retention window. Real commits: what changed, when, why, and the ability to bring back a paragraph you deleted in March. That is a feature nobody else can sell you, because it is git.

Nothing to migrate, ever again

The last migration you do is the one into a repository. Change your mind about ForkLeaf and your notes do not move — you just open the same folder in something else. That is what makes trying this cheap.

Your notes go where your work already lives

Beside the code, in the review flow your team already runs, published to GitHub Pages when you want them read. No integration, no connector, no export step: the same repository, the same pull request, the same history.

Every app in that table can hold your notes today. One of them still can in ten years without your permission, your payment or your password — because it is not an app holding them at all. It is a folder of Markdown in a repository with your name on it, and ForkLeaf is the window you happen to be reading it through.

Ownership

Most notes apps ask you to trust them. This one is arranged so you don't have to.

No database of ours

There is no ForkLeaf notes table. Notes are files in your repository, and the only thing we ever hold is your session cookie.

Your token never reaches the browser

The GitHub access token is encrypted into an httpOnly cookie the server alone can open. Every API call is proxied, so no script on the page can read it.

Leaving costs nothing

Clone the repo. That is the export. Your notes were already plain Markdown in a normal git history the whole time.

Before you press sign in: what GitHub will ask you to grant

The hosted app requests the repo scope. That is broad, and we would rather say so than have you discover it on the consent screen. It is the narrowest classic scope GitHub offers that can write to a private repository — there is no “only this one repo” classic scope to ask for instead.

What it is used for
Reading and committing Markdown files in the repositories you connect. Nothing else is ever fetched.
Where the token lives
Encrypted in an httpOnly cookie on the server. It is never sent to the browser and never appears in a URL.
If that is too much
Sign in with public-repository access only, and ForkLeaf cannot open a private repository at all — or use it with no account whatsoever, on this device.

Pricing

Free. All of it. No tiers.

Your notes sit in your own GitHub account, so there is no storage for us to charge you for and no paywall between you and your writing. If ForkLeaf ever disappears, your notes are already in your repository and keep working without it.

Everything

The whole application, for everyone.

Freeforever

Start writing
  • Unlimited notes in your own repo
  • Unlimited connected repositories
  • Rich, split and source editing
  • Mermaid diagram studio with a visual builder
  • Markdown, HTML, Word and PDF export
  • Offline-first with background sync
  • Full commit history for every note
  • Conflict resolution that shows both versions
  • Works with any repo you can push to

Before you sign in

The questions worth answering first

The rest are in the documentation, which is written for the same reader.

Do I have to connect GitHub?

No. The editor works with no account at all — notes are stored on that device and nothing leaves it. Connecting GitHub is what adds sync, history and reading the same notes on another machine. You can start without it and connect later; open the editor and see.

What exactly is ForkLeaf asking permission to do?

The hosted app requests GitHub’s repo scope, which is broad — it is the narrowest classic scope that can write to a private repository. It is used only to read and commit Markdown in the repositories you connect. The token is encrypted into an httpOnly cookie the browser cannot read. If that is more than you want to grant, sign in with public-repository access only — or use ForkLeaf with no account at all.

What happens to my notes if ForkLeaf shuts down?

Nothing. They are Markdown files in a repository on your own GitHub account, in a normal git history. Clone it and carry on in any editor that reads text. This is the entire reason the app is built this way.

Is it really free, and what is the catch?

Free, all of it, no tiers. The expensive part of a notes app is storage, and ForkLeaf has none — your notes sit in your GitHub account, not ours. The project is open source under Apache-2.0 and funded by optional sponsorship. There is no paid plan being held back.

Will it work with the notes I already have?

If they are Markdown, yes — point ForkLeaf at a repository that already has .md files in it and it reads them where they are, including subdirectories and existing front matter. Obsidian-style [[wikilinks]] are the dialect it speaks natively.

Can I use it offline?

That is the default. Every keystroke is written to IndexedDB on your device first; the commit queue drains to GitHub when there is a network again, and the status bar always says plainly what is saved where.

More in the full FAQ, the security model and what data is stored.

Support

If something breaks, here is who to tell

ForkLeaf is free and open source, and it is also somebody's notes. Every route below reaches a person; the first one that fits is the right one.

Read the documentation

Most questions are already answered in writing — signing in, syncing, conflicts, exporting, and the errors people actually hit.

Open the docs →

Email support

Anything else: a bug, a note that will not sync, a question about your data, or a feature you wish existed. A real inbox, read by the person who builds this.

praneeth2006.dev@gmail.com →

Open an issue

Bugs and feature requests, in public, where anyone else hitting the same thing can find the answer and add to it.

Go to GitHub Issues →

Report a vulnerability

Security findings go through the disclosure policy rather than the public tracker, so a flaw is fixed before it is advertised.

Read the security policy →

One person answers this inbox, so a reply takes as long as it takes — usually a couple of days. Nothing you send is needed to recover your work in the meantime: your notes are Markdown files in your own repository, and the support page lists what to try first and what to include when you write in.

Write the first note. It is a commit by the time you look up.

Free, open source, and stored in a repository you already own. Nothing to install and nothing to migrate off later.

No card. No trial. Your notes never touch our servers.