How bulletlist works

Everything the app does, on one page.

bulletlist is an outliner: one infinitely nested list, where every bullet can be zoomed into and treated as a page of its own. There is nothing to configure before it is useful — open it and start typing.

Getting started

Type your email address and we send you a code; type the code and you are in. There is no password to choose and none to forget, and if you have never been here before the account is created on the way through — signing in for the first time is signing up.

Everything is free, with no caps, no locked features and no trial that ends.

The basics

Every bullet is a page

Click a bullet's dot, or press ⌘., and that bullet becomes the whole document: its text is the title and its children are the outline. ⌘, steps back out, ⌘' returns to the top, and the breadcrumb trail above the outline shows where you are and gets you back to any level in one click. Zooming is also the browser's back and forward buttons, so the trail you walked is real history.

⌘⇧8 stars the bullet you are in, which pins it to the sidebar — the list of the handful of places you keep returning to.

Documents

Any bullet can carry a full markdown document. ⌘⇧⏎ turns the bullet you are in into one and drops you straight into writing — or use "Turn into document" in the row's menu. A document's dot becomes a small file icon, and opening it is the same move as ever: click the icon, and the bullet's page IS the document — title on top, the document below it, and the children still an ordinary outline underneath.

You write it the way it will look. A heading is a heading as you type it, bold is bold, a list is a list — the markdown is the file underneath, not the thing on screen. It is still markdown that gets stored, synced and copied, so nothing is locked in a format only this app can read.

Type it, or press it:

The button beside the copy button in the top right shows the document as a finished page — rendered, nothing editable — for reading it or handing it to someone. Press it again to go back to writing.

The bullet's text is the document's title — rename either, the other follows. Comments are separate from documents: a document can carry one under its bullet like any other row. A document you leave empty turns back into a plain bullet, so opening one to look costs nothing. The copy button above it puts the whole document on the clipboard as markdown.

Turning it back into an ordinary bullet. The bin at the end of the document's own bar deletes the document — and so does "Delete this document" in the row's menu, which is what that row says once the bullet is already one. It asks first, because deleting the document deletes what is written on the page. The bullet itself survives: its title, its comment and everything underneath it are untouched, and it goes back to being a bullet like any other. ⌘Z brings the page back if you change your mind. A document nothing was written in skips the question — there is nothing on it to lose.

Document bodies sync like every other text: two devices editing the same paragraph merge by character, offline included, and export carries documents with the rest of the outline.

Finding things

Bringing an outline with you

Paste a nested list from Workflowy, Notion, Google Docs or any Markdown file and it arrives with its shape intact — indentation becomes nesting, not one flat bullet. For a whole account, export it as OPML and drop the file anywhere on the outline: notes, completed state and links come across with the text.

Getting it out again

Export the outline as an OPML file at any time, without asking anyone. It is always the whole outline, completed bullets included, whatever the current view happens to hide — and it opens in Workflowy, Dynalist, Tana and Obsidian. This is the point: you are not locked in, and you can prove it in ten seconds.

Offline, and on your other devices

Every edit is written to your device first and to your account a moment later, so closing the tab or losing the network cannot lose work. With no connection the app keeps working on the local copy and catches up when there is one. If two devices edited the same outline while apart, the two versions are merged rather than one of them being thrown away.

Installing the app from your browser — "Add to home screen", or the install button in the address bar — gets you the same thing without a tab, and it works offline from the moment it is installed.

Making it yours

Everything you can set lives in one place: your initial in the corner, then Settings. On a phone that button sits next to the ⋯ at the top.

Light or dark follows the system until you say otherwise, and the colour family underneath is yours to pick: ours, or Solarized, Gruvbox, Everforest, Stone, Dracula, Catppuccin, Nord or GitHub. Both halves ship for every one of them, so the light/dark switch keeps working inside whichever you choose. The choice is stored with your account, not with the browser, so the laptop and the phone agree.

The same sheet is where you say whether completed bullets show — the ✓ in the bar does it too, and so does ⌘O.

The two menus

There are only two, and the line between them is worth knowing:

On a phone

The gestures stand in for the keys. Swipe a bullet sideways to indent or outdent it, press and hold to pick it up and drag it, and tap the ⋮ beside a bullet for everything else. While you are typing, a toolbar rides above the keyboard with the actions a laptop would reach by modifier key.

Move to… is on that toolbar too, and a phone is where it earns its keep: dragging a bullet to somewhere off the screen means holding it against the edge while the outline scrolls past. Tap it, then fold the tree open to the destination or type its name — the bullet goes in at the top, and the view follows it there.

Keyboard shortcuts

The same list the app shows under ⌘/. Where a binding differs by platform, both are given.

ActionMacWindows / Linux
Add and edit
New itemEnter
Add a note⇧⏎Shift+Enter
Turn into document⌘⇧⏎Ctrl+Shift+Enter
Complete⌘⏎Ctrl+Enter
Delete⌘⇧⌫Ctrl+Shift+Backspace
Duplicate⌘⇧DAlt+Shift+D
Link selected text⌘KCtrl+K
Bold selected text⌘BCtrl+B
Italicize selected text⌘ICtrl+I
Zoom
Zoom in⌘.Alt+.
Zoom out⌘,Alt+,
Navigate home⌘'Ctrl+'
Star⌘⇧8Ctrl+Shift+8
Jump to any item⌘KCtrl+K
Expand / collapse
Expand⌘↓Ctrl+↓
Collapse⌘↑Ctrl+↑
Change indent
Increase indentTab
Decrease indent⇧⇥Shift+Tab
Move
Move up⌘⇧↑Alt+Shift+↑
Move down⌘⇧↓Alt+Shift+↓
Select multiple items
Extend selection up⇧↑Shift+↑
Extend selection down⇧↓Shift+↓
Select siblings, then everything⌘ACtrl+A
Search
SearchEsc
Show / hide completed⌘OCtrl+O
System
Undo⌘ZCtrl+Z
Redo⌘⇧ZCtrl+Y
Show keyboard shortcuts⌘/Ctrl+Shift+/

Your data

Your outline is yours: no advertising, nothing sold, and nothing used to train anything. What you write is never sent anywhere but your own storage.

The website counts visits with Google Analytics — which pages were opened, and from roughly where. It never sees a bullet, and it is not in the iOS or Android apps, which carry no analytics at all. The privacy policy is short and says exactly what is stored and where.

Taking it with you

Settings → Account → Export as OPML writes the whole outline to a file, at any time, without asking anyone. It is the same export as the one in the ⋯ menu, and OPML is what Workflowy, Dynalist and most other outliners read.

Deleting your account

Settings → Account → Delete account. You type one word to confirm, and then:

There is no undo, no grace period, and nothing to email anyone about. If you want a copy, export it first — the button is directly above.

The email address is not reserved afterwards. You can sign up with it again and you will get a new, empty outline.

Something missing?

Write to support@nozemans.com — a question that had to be asked is a page that needs a paragraph.