It's better when it's simple

User Tools

Site Tools


ToDo Plugin

Compatible with DokuWiki

  • 2024-02-06 "Kaos" yes
  • 2023-04-04 "Jack Jackrum" yes
  • 2022-07-31 "Igor" yes
  • 2020-07-29 "Hogfather" yes

plugin Create a simple, checkbox based ToDo List

Last updated on
Syntax, Action

Similar to do, structtasks

Tagged with task, taskmanagement, todo

Needed for bulletodo

Previous authors: Babbage

Download and Installation

Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.

Usage and examples

Creating tasks

After installing the plugin, simply enter this information on the page you wish to create the todo list:

<todo>Title of todo Action</todo>

Each <todo> tag will create one checkbox for the action.

To create a checkbox that is check by default, create your todo like this:

<todo #>Title of todo Action</todo>

Using bulleted lists (*) is recommended, as it will allow you to more easily make a 'list' out of your items to do.

Assign tasks to persons

To assign users use the @ symbol like this:

<todo @leo>Task for leo</todo>
<todo @leo #>Completed task for leo</todo>

The name of the user can use:

  • the following characters: a-z, A-Z, 0-9, .-_
  • No (white)spaces are allowed!

So @leo.eibler, @Leo_Eibler will work but @Leo Eibler will not work!

Ver. 2013-04-11 user assignment source screenshot

Ver. 2013-04-11 user assignment result screenshot

Multiple users can be assigned in one todo (separated by space character). This way a todo can show up in todo lists of different users.

<todo @leo @runout @somebody>Task for leo and runout and somebody</todo>

Render username

Render the username as id, full name or not at all, allowed values: user or real or none

<todo @somebody username:real>Task with real username of somebody shown</todo>

Start and Due date

Set a start and/or due date and get colored output if todo has started or is due

<todo start:YYYY-MM-DD>Text</todo>
<todo due:YYYY-MM-DD>Text</todo>
<todo start:YYYY-MM-DD due:YYYY-MM-DD>Text</todo>

Colors,… can be set in the style.css file in the plugin directory (lib/plugin/todo)

Set task priority

To set priority for to-do item add 1-3 exclamation marks in the opening tag:

! low priority
!! medium priority
!!! high priority

More than 3 exclamation marks are parsed as high priority.

<todo !!!>Text</todo>


Formatting is not allowed inside of the <todo></todo> tags. However, if you wish for your text to be bold or have some other type of style (other than the default one provided), you can surround the todo tag with the formatting of your choice. The resulting action text should then be displayed with your choice of formatting when your changes have been saved.


A quickbutton for inserting todo syntax is available in the editor toolbar. You can click the button (which is pictured as a checked-checkbox) or you can use the keyboard shortcut of [T].

Uncheck All Button

Add ~~TODO:UNCHECKALL~~ to the page. This generates a button with the label “Uncheck all todos”. Once clicked, all ToDos of this page are reset. A minor edit with the summary “Unchecked all ToDos” is created.

Lightweight Task Management System - Lists

The new version (since version 2014-03-17) of the todo plugin allows to create an easy to use task management system to collect all todos from all pages on a single page. This feature deprecates the previous 'searchpattern' plugin integration.

First turn off caching



Omit Pages from TODOLISTs

If you have pages you never want to include in TODOLISTs, you can put following on these pages:


Display all open and closed todos from all pages


Counting todos and checked todos

Print a summary of checked todos and total todos like (10/14)

~~TODOLIST short:yes~~

Assignments (users to tasks)

Filter the assignments, allowed values: yes, no, usernames in format@username or username, or placeholders @@USER@@ or @@MAIL@@ which are replaced by username or e-mail of current logged in user.

~~TODOLIST assigned:yes~~ 
~~TODOLIST assigned:User1,User2~~ 
~~TODOLIST assigned:@User1,@User2~~
~~TODOLIST assigned:@@USER@@~~
~~TODOLIST assigned:@@MAIL@@~~ finds tasks assigned using someones email.

Show/Hide checkbox

Do (not) show the checkbox, allowed values: yes or no

~~TODOLIST checkbox:no~~

Render username

Render the username as id, full name or not at all, allowed values: user or real or none

~~TODOLIST username:real~~

Render header

Render the header as pageID, as the first header of the page or not at all, allowed values: id or firstheader or none

~~TODOLIST header:firstheader~~

Show/Hide Start/Due Date

Do (not) show the Start/Due date, allowed values: yes or no

~~TODOLIST showdate:yes~~

Completed Data Filter

Completion state

Filter the completion state, allowed values: yes or no

~~TODOLIST completed:no~~
~~TODOLIST completed:yes~~

Completion Date

Filter by date the box was checked.

~~TODOLIST completedbefore:<date>~~
~~TODOLIST completedafter:<date>~~
~~TODOLIST completedat:<date>~~

<date> can be:

Y-m-d like 2014-06-12
or a value like +10 or -10 or 0

invalid values will be substituted with today's date

Completion User (Who checked it)

Filter by user who checked the box. Comma separated list.

~~TODOLIST completeduser:jack,daniel,jessie~~

Start/Due Date Filter

Filter the TODOLIST by Start/Due Date. Absolute and relative Dates are possible.

~~TODOLIST startbefore:<date>~~
~~TODOLIST startafter:<date>~~
~~TODOLIST startat:<date>~~
~~TODOLIST duebefore:<date>~~
~~TODOLIST dueafter:<date>~~
~~TODOLIST dueat:<date>~~

<date> can be:

Y-m-d like 2014-06-12
or a value like +10 or -10 or 0

invalid values will be substituted with todays date

Combined options

~~TODOLIST assigned:@@USER@@ completed:yes ~~
~~TODOLIST assigned:Gerrit,leo completed:no ~~

Some default values for these options can be set in the Configuration Manager

Filter the namespace of the task list

I've added the following option to the ~~TODOLIST~~ tag: ns:

If omitted it uses ns:all.

It can be used with the following parameters:

  • all – displays todo's from everywhere (the current default behaviour)
  • / – only displays todo's from pages containing in the ROOT namespace
  • <string> – Where string can be any text. It checks the page-id if it starts with this string and then returns the pages with todo's that do; for example:
  • . or ending in :. – display this namespace and subnamespaces (not much tested)
  • .: – display only subnamespaces (not much tested)
~~TODOLIST ns:todo~~

returns all todo's from the page todo in the root of the wiki, or from the namespaces starting with todo or from the page todo and the namespaces starting with todo.

~~TODOLIST ns:todo:~~

returns all todo's from the namespace todo.

~~TODOLIST ns:todo:r~~ 

returns all todo's from the namespaces or pages under todo, starting with an r.

Example of 'all todos'

Ver. 2013-04-11 overview over all tasks on single page using searchpattern plugin

Example of 'all todos' from many namespaces

If you want to display more than one namespace in a single page, you can put a TODOLIST for each :

~~TODOLIST ns:foo:~~
~~TODOLIST ns:bar:~~

Plugin Settings

Default: Off

This option (when enabled) will allow your actions to also link to a page with the same name. This way, if you have important details about an action, you can place them in this link.

However, Backlinks to the TODO do not currently work. Also, if you use the Move Plugin, the link will not be updated/moved if the details page that the link points to is moved.

What namespace should your actions be created in (".:" = Current NS, Blank = Root NS)

Default: [Empty]

This option allows you specify where actions links should be placed. Using “.:” will cause the actions to link to whatever namespace you are currently in. Leaving it blank or typing “:” will cause all actions to link to the root namespace. Using something like “.:actions:” will cause the actions to link to whatever the current namespace is, plus an “actions” namespace. (Added with version 9-9-09)

Should the actions have strike-through applied when checked?

Default: On

This option (when enabled) will place a strike-through in the actions that have been completed. When disabled, an action can be checked, but the text will not have strike-through applied.

Default: On

When this option is enabled, and the links option is disabled, then clicking on the text of an action will mark that action as being complete. (Added with version 10-14-09)


Please request your features and issues in the tracker at

Known Issues

The ~~TODOLIST~~-functionality finds every <todo>…</todo> item, even when inside a code or a file block. Also, after being rendered on a TODOLIST page, toggling the checkbox of that item will update its code accordingly. This was reported in Issue #12 on Github


For the current default download package (see start of this page) one should refer to its GitHub Atom Feed:


plugin/todo.txt · Last modified: 2024-05-10 16:39 by einhirn

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki