Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Todo ItNew to Visual Studio Code? Get it now.
Todo It

Todo It

Kilian Schnelle

|
7 installs
| (1) | Free
A modern hybrid TODO manager: scan your code for comment tags (TODO/FIXME/…) and keep your own checkable tasks, all in one view.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Todo It

A modern, hybrid TODO manager for Visual Studio Code — scan your code for comment tags and keep your own checkable tasks, side by side in one sidebar.

CI Version Installs Rating License: MIT

Todo It is a fresh, MIT-licensed take on the much-loved (but unmaintained) Todo Tree — rebuilt from scratch on the current VS Code APIs, with fast ripgrep scanning and a built-in task list.

TODO IT
├─ 📌 My Tasks            (click a task → Task Details panel)
│   ☐ Write parser tests           high · due 2026-06-01 · 📝
│   ☑ Set up CI
│   ☐ Review PR [#42](https://github.com/KiSchnelle/todo_it/issues/42)                low
└─ 🔍 Found in Code
    ├─ TODO (12)
    │   ├─ refactor this loop        src/app.ts:42
    │   └─ handle the empty case     src/api.ts:8
    ├─ FIXME (3)
    │   └─ race condition here       src/db.ts:91
    └─ HACK (1)

Features

🔍 Found in Code — comment-tag scanner

  • Scans your whole workspace for tags like TODO, FIXME, HACK, BUG, NOTE, XXX inside comments — fully configurable.
  • Powered by ripgrep (bundled), so it stays fast even on large repos.
  • Group by tag, by file, or as a flat list — switch any time from the view toolbar.
  • Jump to code: click any result to open the file at the exact line and column.
  • Respects .gitignore and your own include/exclude globs.

✅ Editor highlights

  • Per-tag gutter icons, tag coloring, and overview-ruler marks so todos are visible while you code.
  • Colors and icons are configurable per tag; toggle all highlighting with one command.

📌 My Tasks — built-in task list

  • Add, check off (real tree checkboxes), and delete tasks without leaving the editor.
  • Click a task to open the Task Details panel — a dedicated editor with title, priority, due date, and a large multi-line note field (save with ⌘/Ctrl+S).
  • Flexible due dates: an exact date (2026-06-01) or a relative one (tomorrow, 3 days, 2 weeks, 1 month) — in the panel or the quick-add prompts.
  • Sort tasks by priority, due date, or manual order (completed tasks always sink to the bottom).
  • Tasks are persisted with your project in .vscode/todos.json by default — commit them to share with your team, or switch to a private/local store.

⚡ Live & multi-root

  • Live updates: files are re-scanned automatically as you edit and save (debounced); deletions disappear on their own.
  • Monorepo-ready: results and tasks are scoped per workspace folder.

Getting started

  1. Install Todo It from the Marketplace (or run Extensions: Install from VSIX…).
  2. Open the Todo It view from the Activity Bar (the checklist icon).
  3. The Found in Code section fills in automatically from your workspace; click any item to jump to it.
  4. Add your own tasks with the + button (or Todo It: Add Task from the Command Palette).

Commands

All commands are available from the Command Palette under the Todo It category.

Command Title Where
todoIt.addTask Add Task View toolbar (+), Command Palette
todoIt.editTask Open Task Details (title / priority / due / note) Click a task, pencil icon
todoIt.deleteTask Delete Task Task context menu
todoIt.setTaskSort Sort Tasks By… My Tasks header
todoIt.refresh Refresh View toolbar
todoIt.setGrouping Change Grouping View toolbar
todoIt.toggleDecorations Toggle Editor Highlights View toolbar
todoIt.openMatch Open Todo Click a scanned result

Settings

Configure everything under the Todo It section of Settings (todoIt.*).

Setting Type Default Description
todoIt.tags array TODO, FIXME, HACK, BUG, NOTE, XXX Tags to scan for, with optional color, backgroundColor, iconPath, and rulerColor.
todoIt.caseSensitive boolean true Match case-sensitively, so only TODO matches (not Todo/todo) — avoids catching words like "note".
todoIt.commentsOnly boolean true Only match tags that follow a comment marker — ignores prose, strings, and code.
todoIt.commentMarkers string[] // # <!-- /* * -- ; % Comment leaders used when commentsOnly is on. Tune to suit your languages.
todoIt.include string[] ["**/*"] Glob patterns of files to scan.
todoIt.exclude string[] node_modules, dist, out, .git, *.min.* Glob patterns to exclude.
todoIt.respectGitignore boolean true Skip files ignored by .gitignore.
todoIt.maxResults number 5000 Maximum number of scanned matches.
todoIt.debounceMs number 400 Delay before re-scanning a changed file.
todoIt.scan.grouping enum tag Group scanned results by tag, file, or flat.
todoIt.decorations.enabled boolean true Highlight tags in the editor.
todoIt.tasks.storage enum file Where manual tasks live: file (committed .vscode/todos.json), gitignoredFile, or workspaceState.
todoIt.tasks.sortBy enum manual Order tasks by manual, priority, or dueDate (completed always last).

Example: custom tags

"todoIt.tags": [
  { "tag": "TODO",   "color": "#ffbd2e" },
  { "tag": "FIXME",  "color": "#ff5f56" },
  { "tag": "REVIEW", "color": "#a6e22e", "backgroundColor": "#2c3327" }
]

Where are my tasks stored?

todoIt.tasks.storage controls it:

Mode Location Good for
file (default) .vscode/todos.json (committed) Sharing tasks with your team
gitignoredFile .vscode/todos.local.json (auto-gitignored) File-based but private to you
workspaceState VS Code internal storage Fully local, never a file

Requirements

  • VS Code 1.120.0 or newer.
  • The code scanner needs local files (it runs ripgrep), so it is unavailable in virtual workspaces such as github.dev — your manual tasks still work there.

Trust & privacy

Todo It is read-only against your code (it never modifies source files) and runs entirely offline — no telemetry, no network calls. It supports Workspace Trust: in an untrusted workspace, custom tag styling from the folder's settings is ignored as a safety measure, while scanning and tasks keep working.

Known limitations

  • Scanning requires a real filesystem, so it is limited in virtual/remote-virtual workspaces.
  • Tags are matched as whole words on a line; multi-line block-comment context is not parsed.

Development

npm install        # install dependencies
npm run watch      # esbuild in watch mode — then press F5 to launch the Extension Host
npm run check-types
npm run lint
npm test           # unit + integration tests (VS Code test host)
npm run vsix       # build a .vsix package

Contributions and issues are welcome. The codebase is small and typed: scanning lives in src/scanner/, the tree in src/tree/, tasks in src/tasks/, and editor highlights in src/decorations/.

License

MIT © Kilian Schnelle

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft