User guide
How Just Todo It works, from your first task in the Inbox to shortcuts and importing.
Getting started
Just Todo It has three columns. On the left the sidebar, with your Inbox, your views, your lists and your tags. In the middle the panel showing the tasks of whatever you selected on the left. On the right, if your screen is wide enough, the detail panel of the task you have open. On a narrow screen those last two slide over each other.
Everything starts in the Inbox. That is the list that is always there, that you cannot delete, and where a task lands when you do not say where it belongs. Write down whatever is on your mind first; sorting it out can wait.
You create a task with the New row at the top of the sidebar, or with the N key. You give it a title, and if you already know, a list (and the heading within it), a date and a priority straight away. The rest (time, reminder, repeat, tags) you fill in from the detail panel, where you end up right after saving.
It goes faster if you type everything on one line, in the create row at the top of a list. See Typing it in one line.
There is nothing to save or sync by hand. Changes go straight to the server and show up on your other devices within a few seconds. Browsing with JavaScript turned off? The app still works: every change is a plain form.
Tasks
A task has a title, and beyond that only what you give it. Click the title to open the detail panel. It holds:
- Notes, as long as you like, with formatting if you want it. See Formatting notes.
- Date, in a single row that opens up to everything time related. See When.
- Priority: none, low, medium or high. In the task row that is one to three small bars rather than a coloured block, because the task itself should speak louder than its priority.
- List and, if you use them, the heading it sits under. Pick another list and the subtasks come along; the task lands at the bottom there, without a heading.
- Tags.
- Subtasks, one level deep. A subtask is an ordinary task hanging under another one; it opens in the same panel, and the line above the title points back to its parent.
- Attachments: images and PDFs you hang on the task. See Attachments.
- History: what changed on this task, and when.
There is no save button: what you type is already there, and closing it means you are done. That goes for the date row too, where picking counts right away. So there is no way back either, other than putting the field back the way it was.
Completing a task is the checkbox in the row, or X while the row has focus. Which side that checkbox sits on is your choice, in settings. Completed tasks do not disappear: they drop into the Done block at the bottom of the panel, most recently completed first. In Today that block is open, in your lists it is closed; open it to put something back.
Order is up to you: drag the row where you want it. The whole row is the handle, so there is nothing small to aim for. Without a mouse, use the arrows that appear once the row has focus. If you would rather not arrange things yourself, switch sorting in the panel header to date, priority, creation date or name, with a direction. As soon as you sort by anything other than manual, dragging no longer changes the order.
Drop a task on a list in the sidebar, or on the Inbox, and it moves there and lands at the bottom. The list lights up as soon as you hover over it. That works with a mouse, wherever you can drag to reorder; otherwise pick the list in the List field of the detail panel.
Deleting is never final. The task goes to the Trash, a notice appears at the bottom with "Undo", and ⌘Z does the same while that notice is still there. Too late? Get it back from the Trash, where it sits for thirty days.
Several tasks at once you handle with Select, in the menu or behind the list icon in the panel header. Checkboxes appear in the rows (X ticks the box of the focused row) and a bar shows up at the bottom: complete, move, set priority, add a tag or delete, in one go for everything you ticked. "Put in" lists Today and Someday next to your own lists, and those two move nothing: the task stays in its list and only gets a start date of today, or the Someday mark. Deleting goes to the Trash here too, only without the "Undo" notice. The bar closes with "Close selection" or Escape.
Formatting notes
At rest a note is simply readable text. Click into it and you see what it is made of; click away and it reads as formatted text again. There is no button to switch between those two, because reading and writing are not two modes of the app here, they are two things you do.
What you can use:
**bold**for bold- `
code` for a piece of text that has to stay exactly as it is # A headingor## A headingfor a heading in the text-at the start of a line for a list,1.for a numbered one[the text](https://example.com)for a link
An address you paste does not need those brackets: https://… becomes clickable on its own. A line break is a line break, mid-paragraph included.
Two things to know. Search runs over the text as you typed it, so looking for "permit" will not find **permit**. And on your phone you see the note the way you wrote it, with only the addresses tappable; the formatting is drawn by the web app only.
Attachments
You can hang images (PNG, JPEG, WebP) and PDFs on any task, up to 10 MB per file and ten per task. Pick a file in the Attachments block and it is there right away; the plus next to it puts the file in your note, as a picture for an image and as a link for a PDF.
How much room you have depends on your plan: 25 MB in total on free, 2 GB on premium. Removing one gives that room straight back, because unlike a task an attachment does not go to the Trash.
What to know before you lean on it:
- An attachment is yours alone. There is no shareable link: open the address without being signed in and you get nothing.
- Throw a task away and its attachments stay as long as the task sits in the Trash. Once the task is gone from there for good, they go with it.
- The export does carry the details of your attachments (name, type, size) but not the files themselves. If you want those, fetch them separately.
Typing it in one line
In the create row at the top of a list you do not have to save a title first and click the rest together afterwards. Whatever you put in the line, the app picks up by itself:
Tax return tomorrow 9:00 #work !high @Finances
While you type you see underneath what it makes of it, so there is nothing to memorise: if nothing shows up, it is simply a title.
| What | How you type it |
|---|---|
| Date | today, tomorrow, next week, monday, 9-12, 12 September |
| Time | 9:00, 9am, 5pm, or at 9 |
| Start date | from monday |
| Repeat | every day, every 2 weeks, every monday, weekly |
| Priority | !high, !3, or just !!! |
| Tag | #work |
| List | @Finances |
This works everywhere you type a task, including in the app on your phone.
On the website, a short list of your own tags or lists appears as soon as you type a # or an @. Arrow keys to move, Enter or Tab to take one, Escape to dismiss it. The app has no such list: there a #tag only attaches to a tag you already have.
A tag never appears by itself. Type #client while that tag does not exist yet and nothing happens: the text simply stays in your title. To really create it, pick the "New tag: client" line at the bottom of the list. That way a typo never leaves you a tag to clean up later. Creating new tags is part of premium; attaching one you already have always works.
What it does not recognise stays put: an address like eric@example.com, a language like C# and a reference like #123 are left alone. Inside a link it recognises nothing, not even when the address contains tomorrow or @name.
If the line is only a web address, the task gets the name of that page. Paste a link to a YouTube video and the task first shows the address, then a moment later the title of the video. The address itself goes to the top of the notes. A date or tag after it works as usual. If the page cannot be fetched, the address stays the title. Change the title of a task into a link later and the same happens as soon as you leave the title field.
A task that moves with `@list` lets go of its heading. Type something with a different list in it under a heading and the task ends up in that list, no longer under that heading: a heading belongs to one list.
And you can overrule it. To write "discuss tomorrow with Jan" without getting a deadline, click the small cross on the chip on the website. A backslash appears in front of the word (discuss \tomorrow with Jan) and the app leaves it alone. You can type that backslash yourself too, and one backspace switches recognition back on. It never ends up in your title.
In the "New" window the fields follow what you type: @Work switches the dropdown, "tomorrow" the date, !high the priority. Nothing on screen says anything other than what is about to happen, and you can still change it by hand.
Set such a field yourself and your choice wins. Pick a date in the window and then type "tomorrow" anyway: your date stays, and the word stays in your title too, instead of disappearing into a value that is not used. A date the app filled in for you does not count as your choice, so when you add a task from Today, "tomorrow" does win.
When
The app knows two kinds of date, and that distinction is the whole idea behind it.
- A deadline (due date) is when something has to be finished. Once it passes, the date turns red.
- A start date ("from") is when you want to begin. Until that day the app leaves the task alone; it surfaces by itself when the time comes.
A task without a date is not urgent anywhere and only sits in its own list.
Someday is the third state, and it beats both of the others. Put a task on Someday and it drops out of Today and Upcoming, even with a date on it. That is where "nice idea, not now" belongs.
A deadline can carry a time. Without one it is a bare calendar day and your time zone does not matter; with a time the app converts using the time zone in your settings. A time can carry a duration: it sets how tall the block is in the week and day views, and without one the calendar reckons half an hour. The duration hangs on the time, so remove the time and the duration goes with it.
Repeat applies to a task with a deadline: every day, every weekday, every week, every other week, every month, every year, or something of your own. For a custom repeat you also pick what it counts from: the due date (on schedule, so ticking it off a week late shifts nothing) or the moment you complete it. Complete a repeating task and it comes back with the next date.
Reminders
The three fixed choices count back from the deadline, so they only appear once there is a date: at the time itself, on the day at 09:00, or a day earlier at 09:00. Pick a moment of your own and you name the day and the time yourself, so there does not have to be a deadline at all.
At the agreed moment the app sends a message. Where it arrives depends on what you have switched on: a push notification in the browsers where you allowed it, and otherwise an email. See Notifications.
The bell at the bottom of the sidebar shows what is scheduled and what was sent recently. Handy for checking that something really is queued.
Location reminders
A task can also go off at a place instead of a time: "milk" when you are at the supermarket, "put the bins out" when you leave home.
First you create the places, in Settings on the website or in the app under Settings ‣ Places. A place has a name, a point and a radius. On the website you find the point by address. For now that only works for Dutch addresses, and the search does not know shop names: search for the shop's address instead. In the app you search through your phone, or use your current location. Don't pick the radius too small, because below 150 metres your phone easily misses an arrival.
Every place also has its own screen with the tasks waiting there, grouped by list. You reach it with ⌘K by typing the name of the place, or in Settings ‣ Places with the arrow behind that place.
Then you pick the place for a task, and whether it tells you when you arrive or when you leave. If the task has a date, you can have it remind you only from that day; before that it stays quiet.
The reminder only comes from the app on your phone, not from the website or the desktop app. Turn it on there once, under Settings ‣ Places. The app then asks for location access, and that has to be set to Allow all the time: with only "while using the app" nothing arrives while the app is closed. Where you are stays on your phone; we only know the places you set up yourself.
A few things are up to your phone, not the app. A reminder can arrive a few minutes after you get there. An iPhone watches at most 20 places at once, and then the nearest ones. If you force-stopped the app on Android, nothing arrives until you open it again. And the same task won't remind you more than once every half hour.
Organising
There are four levels, and you do not have to use all of them.
Lists are the basis. A list has a name and may have an icon and a colour. Alongside your own lists there is always the Inbox.
Areas group lists. An area is a row in the sidebar in its own right: click it and you see every list underneath it with its tasks, and in the column they unfold at the same time. Once you are on that area, clicking the same row again folds them back up; the chevron next to it does the same without leaving the screen you are on. They start closed, because the column should tell you that you have them, not show everything at once. Delete an area and the lists survive; they simply move out on their own in the sidebar. Archive an area and the lists inside it do come along, and they come back together too.
Headings split a long list into parts, inside that one list. A heading is a hairline with a name on it, not a folder. Delete a heading and the tasks stay put, they just fall back to "no heading".
Tags cut across everything. See Tags.
Lists and areas are dragged into place in the sidebar; a line shows where they will land. Areas, headings and tags can each be switched off in settings if you do not need them. Whatever you already made stays; it is only out of sight.
To see the level above a single object there are three overviews: all areas, all lists and all tags, each with what hangs underneath. The way in is the small capitals heading in the sidebar.
Smart lists
Six views that keep track of their own contents. Which of them appear in your sidebar is up to you, in settings; the Inbox always stays.
Today is what is on the table now: everything overdue, plus whatever starts today or is due today. The Done block is open here and shows only what you completed today, so it reflects your day instead of turning into a second archive.
Upcoming is the road ahead, grouped by day. Anything already live today is not in it, that belongs in Today.
Someday is the wish list: everything you deliberately parked.
Type a task into the row at the top of Today or Someday and it lands in your Inbox: in Today with today's date, in Someday as Someday straight away. A view is not a list, so a list has to be picked, and that is the Inbox.
Logbook is the archive of everything finished, most recent first.
Archive is for what is finished but may stay: a project that is done, last year's tax return. You archive a list or an area from the menu at the top right of the panel. What you archive disappears from your sidebar and from Today, Upcoming and Someday, but it stays findable through search and stays in your Logbook, with its list name next to it. There is no deadline on it and nothing goes away; you restore it in the Archive itself, or on the list when you open it. Archive an area and the lists inside it come along. Two things to know: a reminder on an archived task no longer fires, and it does not fire later either when you bring the list back, and archived lists stay out of your calendar feed. The difference with the Trash: that one is for a mistake and gets emptied after thirty days, the archive keeps things.
Trash keeps deleted tasks and lists for thirty days. You can restore or permanently delete each one. A deleted list shows as a single row; its tasks come along with it and return when you restore it.
There is also the Calendar, a view of everything you have planned, by month, week or day; the switch at the top right changes the view. A task sits on its start date when it has one, otherwise on its deadline; when it has both, the deadline trails the title (due 8/20). Anything in Someday stays out. In the week view anything with a time becomes a block at that hour, as tall as its duration, and the rest sits in the band along the top. The day view puts whatever has no time next to the clock, and on today it also lists what is overdue, with a single button to move it to today. The grid shows 8 to 18 at the least and grows with whatever falls earlier or later. And there is Activity, which records what you did and when. On that page you can filter by list or by task, and restore things from there.
On your phone, Upcoming, Someday, Logbook, Archive and Trash sit under the Lists tab; Today has a tab of its own there. Whatever you switch off here disappears there as well.
Keyboard shortcuts
Shortcuts work everywhere in the app, except while you are typing in a text field. Esc is the exception there: it gets you out of the field. The card with this same list is ? inside the app.
Once you know them, the little keys next to rows and buttons can go: switch "Show keys" off in Settings → Appearance. That is the display only. The keys themselves keep working, and the card behind ? stays as well.
Ctrl+Z (Cmd+Z on a Mac) reverses your last action. If there is a notice at the bottom with "Undo", the key presses exactly that button. If there is not, it is about your last change to a task: ticking it off, moving it, or a field you adjusted. That happens without a notice beforehand, but afterwards you do briefly see what was reversed. One step back, no more: pressing again does nothing. And it applies for as long as you stay on the same screen, so if you click through to another list, the key leaves your work alone.
| Keys | What it does |
|---|---|
| ⌘K⌘ K | Quick menu: search and actions |
| // | Quick menu: search and actions |
| NN | New: task, list or area |
| JKJ K | Next / previous task |
| ↑↓↑ ↓ | Same, but only inside the list |
| ↵↵ | Open task |
| XX | Complete |
| EscEsc | Close |
| ⌘Z⌘ Z | Undo the last change |
| ⌘1–9⌘ 1–9 | List or view |
| [[ | Toggle sidebar |
| ?? | Shortcuts card |
Adding it to your home screen
The web app can sit on your home screen as an app of its own: its own icon, its own window, no address bar around it. There is nothing to fetch from an app store for it.
Android and desktop: your browser offers it itself, through "Install app" or "Add to home screen" in the menu.
iPhone and iPad: open the app in Safari, tap the share icon at the bottom and choose "Add to Home Screen". Other browsers on iOS cannot do this, even where they show a button for it.
On an iPhone that is more than just tidier. Push notifications work there only from the app on your home screen, not from an ordinary Safari tab.
It stays the same app with the same data. You stay signed in, and what you do on your home screen is in your browser and on your other devices a second later.
Without a connection the screens you looked at recently stay readable, and a page the app has not seen yet says plainly that there is no connection. Changing things has to wait until you are back online: every change goes straight to the server, so nothing ever lingers silently in a queue.
The Android app has three quick ways to jot something down. Press and hold the app icon for New task, Today or Search. Put the New task widget on your home screen: press and hold an empty spot, choose Widgets and look for Just Todo It. And share a link or some text from another app with Just Todo It: a new task opens with it already filled in. A link gets the title of that page, with the link in the notes.
Notifications
Reminders arrive over two channels, and you can have both.
Push notifications are switched on per browser, in Settings. Per browser is literal: your laptop and your phone are two separate registrations, and you have to allow it once on each. If you ever chose "block", only the browser's own settings can undo that: click the padlock on the left of the address bar.
On means two things at once: the device grants permission, and it is registered with your account. If only one of the two holds, the row says so, with the button that goes with it. That happens when you sign this browser out from another device, for instance: the permission is still there, but nothing arrives any more.
On an iPhone or iPad that only works once the app is on your home screen: in an ordinary Safari tab, iOS does not even offer to ask. See Adding it to your home screen.
Email is a channel of its own, and you choose what role it plays under Settings ‣ Notifications ‣ Email. "Only when no notification arrives" is the default and is the safety net that was always there. "Always" sends the mail even when the notification did arrive, handy if you want your reminders back in your inbox. And with "Never" you hear nothing about a reminder that arrives nowhere; that is the only setting where something can genuinely be lost, which is why it is flagged in red.
On your phone you switch notifications on inside the app, under Settings. That is a separate registration: your browser and your phone stand apart. Switch them off there and they stay off, including after you close the app and open it again. Sign out and the app unregisters straight away, so the next person using that device does not get your reminders.
In the desktop app, reminders arrive while the app is open, and you do not have to allow anything for that. With the app closed nothing arrives: your browser and your phone take over. You can switch them off here in Settings or in the menu under the icon in your menu bar; that is a choice for that computer, and the number of tasks due today stays on the app icon either way.
The test button sends one notification to all your registered devices at once, not just to the device you press it on. That way you check your phone from behind your laptop. Afterwards it says how many devices accepted it; if that differs from the list below, you know straight away which device is failing.
Below that switch sits the list of everything that gets notifications: every browser and every phone, with the date you switched it on. An old laptop or a device you gave away can be signed out from there, and that works from either side. Signing out asks for confirmation first, because signing up again is only possible from the device itself. Whichever device you are on right now is marked "this device" and has no sign-out button; you turn that one off with the switch above.
Settings
Settings are grouped into sections, with an index beside them.
Account: your display name, your profile picture, your email address.
Subscription: which plan you are on and how much of it you use. See Premium and importing.
Appearance: light, dark or "follow my system". The language (Dutch or English): that one belongs to your account, so you arrive in that language wherever you log in, and your email comes in that language. Light or dark and the side of the checkbox belong to the device you pick them on. The side the checkbox sits on in a task row, and whether the little keys next to rows and buttons are in view. Plus six switches for what you want in view: which smart lists appear in the sidebar, whether you use areas, headings and tags, whether a list in the sidebar shows its progress or just the number, and whether the calendar shows the week number next to each week.
Bottom bar only exists in the app on your phone. There you pick which four slots sit next to the plus button: a smart list, one of your own lists, an area, a tag, a place, or Search, Calendar or Activity. The plus button keeps the middle. Lists and Settings always stay in the bar, because they are the only ways to everything else and to your settings respectively; moving them is fine.
One of those slots may follow where you are. You link places to it, and as soon as you are at one of them that slot becomes that place. The rest of the time it is whatever you picked as its fallback. A dot on the icon tells you it is showing something other than usual. This only works if you turned on location reminders, see Location reminders, and only one slot can follow you at a time.
Time and notifications: your time zone, taken from your device or picked yourself. It decides when "today" starts and when a timed reminder fires. Below it, push notifications for this browser.
Security: see Security and account.
Data: importing from TickTick, and exporting everything you have. The "Download" button gives you a single JSON file with your areas, lists, headings, tags and tasks (including subtasks, repeats and reminders), to keep as a backup or to take with you. Exporting works on every plan.
This is also where the calendar feed lives: a secret link you can subscribe Apple Calendar, Google Calendar or Outlook to, so your open tasks with a deadline sit among your appointments. Treat the link like a password: anyone who has it can see your tasks, and "Refresh link" makes the old one invalid right away. Do not count on seconds: calendar apps fetch a feed at their own pace, and Google in particular can take hours before a change shows up.
Danger zone: deleting your account for good. It asks for your email address and your password, and it cannot be undone.
Security and account
You sign in with your email address and a password. A new account has to confirm its email address first; that message arrives right after signing up.
Changing your email address happens under Settings, in Account. You type the new address and your password, and a confirmation then goes to your current address first. Only once you open that one do we send a final email to the new address; until you confirm that one, nothing changes. Your tasks, your passkeys and your linked devices stay with your account: they are not tied to your address. Only signing in uses the new address from then on.
Two factor authentication asks for a code from an authenticator app after your password. You scan a QR code and then receive a set of backup codes. Keep those somewhere other than your phone: they are the only way back if you lose your authenticator. You can generate new ones at any time, which retires the old set.
Passkeys replace the password with Face ID, Touch ID or a security key. You can have several, one per device, and revoke them individually; that asks for confirmation first, because a new passkey can only be created on the device itself.
Locking the app draws a curtain over your lists until you show yourself. You turn it on under Settings → Security, and the choice applies to that device only: on your phone yes, on your own computer no is perfectly fine. You pick when the curtain falls: as soon as you leave the app, after 1, 5 or 15 minutes away, or only when the app starts up again. The device itself handles the unlocking, so it differs per place: on your phone your finger or your face, with the device passcode as the fallback; in a browser your passkey; in the Mac app Touch ID. That is why the app asks you to unlock once at the moment you switch the lock on. Your passkey lives on one device and counts for one address only, and without that proof you could turn the lock on where it is not, and lock yourself out.
If that device has no passkey and no Touch ID, the app offers a code of 4 to 6 digits instead. It stays on that device and never reaches the server, so it counts only there; on another computer you set something up again. Five wrong tries and you wait ten seconds. Forgetting it is no disaster: you can always sign out and then sign in with your password. You can change or remove the code under Security, and removing it switches the lock off on that device, because there is nothing left to open it with.
Note what the lock is and is not: you stay signed in, and your session stays valid. It stops someone who briefly has your phone or laptop from reading your lists straight away. If you really want to be gone, sign out; you can do that from the lock screen in the browser too.
Sign-in from an unknown device: if you sign in from a device we have no earlier sign-in from, you get an email with the device, the time and the IP address. Wasn't that you? Change your password right away and turn on two factor authentication.
Signed-in devices: Settings → Security lists every sign-in that is still valid, with the device and its last activity. See one you don't recognise? Sign it out from there; that asks for confirmation first, because you have to sign in again on that device afterwards. This is a different list from the devices under Notifications: that one is about who gets notifications, this one about who has access.
Connecting an assistant
You can give an AI assistant access to your tasks, so you can ask in a conversation what is open today, or have something added to a list. This works through MCP, the standard assistants use to talk to other apps.
Connecting is adding one address:
https://todo.fliksemblits.com/api/mcp
In Claude that goes under Settings, Connectors, using "custom connector" and that address. If you work in the terminal with Claude Code, it is claude mcp add --transport http todo https://todo.fliksemblits.com/api/mcp. Other assistants that speak MCP work the same way.
The first time, a window from this app opens: you sign in as usual and then see one screen telling you what is asking for access. The assistant gets in only once you click Allow there. If you do not recognise the name, click Deny: that name is chosen by the app signing up, so it only means something if you just clicked connect yourself.
Read this before you allow it. A connected assistant may do what you can do in the app: read, create, change, complete and trash tasks and lists, and add, rename and remove areas and headings in a list. It cannot reach your password, your two-factor setup, your passkeys or your subscription. Everything it does lands in the task's history and shows up straight away in your open windows, so you can read back what happened. Deleted tasks sit in the trash for thirty days.
To revoke a connection, let us know for now: a screen for that is coming, but it is not there yet.

