Move Completed Tasks

approved

by Aaron Penne

Automatically move completed tasks to the bottom of their checkbox group - This plugin has not been manually reviewed by Obsidian staff.

4 stars353 downloadsUpdated 1mo agoMIT

Move Completed Tasks

GitHub release Obsidian License

Yet another Obsidian plugin that moves completed tasks to the bottom of the list when you check them off. This one behaves like Apple Notes, Todoist, and Noteplan.

Before and after

It does two things:

  1. When you check a task, it drops to the bottom of its list automatically. A highlight flashes so you can see where it went. Ctrl+Z to undo.
  2. Two commands let you sort or collect completed tasks across the whole document, if you have a page that's already messy. Both are bindable to hotkeys.

Delay, placement, subtask handling, which checkbox characters count as "done", and more are all configurable.

Install

Community plugins: Settings > Community plugins > Browse, search "Move Completed Tasks", Install, Enable. Or install directly.

Manual: Grab move-completed-tasks.zip from the latest release, unzip into <vault>/.obsidian/plugins/, enable in Settings > Community plugins.

BRAT: Add aaronpenne/move-completed-tasks.

How it works

Check a task and it moves to the bottom of its group, subtasks and all. Subtasks stay with their parent; a nested checkbox never jumps out of its parent list.

A "group" here means any unbroken run of checkboxes at the same indent level. Blank lines, headings, code fences, or non-checkbox content end a group. This matches what the plugin's settings UI calls a group.

Commands

Open the command palette (Ctrl/Cmd+P) and search "Move completed":

CommandWhat it does
Move all completed tasks down (scoped)Goes through every group in the document and pushes completed tasks to the bottom. Handles nesting. Keeps relative order.
Collect all completed tasks to end of documentPulls every completed task out of the body and drops them under a configurable ## Completed heading at the end of the note.

Both can be bound to hotkeys in Settings > Hotkeys.

Settings

OptionDefaultWhat it does
EnableOnMaster toggle for auto-move on check
Move with subtasksOnMove nested items as a block with their parent
Skip subtasks with open parentOffDon't move a completed subtask if its parent task is still open
PlacementAbove completedWhere newly completed tasks land: above other completed items, or absolute bottom of the group
Excluded characters?!*"lbiSIpcfkwudCheckbox characters that count as statuses, not completions (Minimal theme decorators by default)
Completed headingCompletedHeading text used when collecting completed tasks to the end of the document
Section-aware collectionOffWhen collecting, group completed tasks under sub-headings that mirror the original document structure
Highlight moved taskOnBrief visual flash at the task's new position
Move delay0sSeconds to wait before moving (0 = instant). Uncheck before the delay fires to cancel.

Per-note opt-out

Add move-completed: false to a note's frontmatter to disable all auto-move and bulk commands for that note:

---
move-completed: false
---

Theme compatibility

Works with any theme that uses standard markdown checkboxes. Themes like Minimal, AnuPpuccin, and ITS Theme add alternative checkbox states ([?] for question, [!] for important, etc.), and the excluded characters setting keeps those from being treated as completed. The default exclusion list covers all Minimal theme decorators:

[?] question    [!] important
[*] star        ["] quote
[l] location    [b] bookmark
[i] info        [S] savings
[I] idea        [p] pros
[c] cons        [f] fire
[k] key         [w] win
[u] up          [d] down

Related plugins

There are a lot of great task plugins for Obsidian. Here's what else is out there:

Plugin compatibility

  • Tasks: moves happen after Tasks appends completion dates, so timestamps are preserved
  • Dataview: no conflicts (Dataview reads, this plugin writes)

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.