Timewarrior Command-line time tracking

Version 1.9 · source

Start here

timew start <tag>...
Begin tracking
timew
What is running?
timew stop
End tracking
timew summary :ids
Today with IDs
timew track <range> <tag>
Log past time
timew continue
Resume last interval
timew tag @<id> <tag>
Add a tag
timew undo
Revert last change

Concepts

  1. No tracking timew shows none
  2. Open interval running, has tags
  3. Closed interval @1 is the newest
  4. Correct / report move, tag, export

Track

timew start <tag>...
Start tracking with tags
timew stop
Stop the running interval
timew
Show current tracking status
timew start <time> <tag>
Start at a past time
A bare time like 3pm means the most recent 3pm, never a future one.
timew start 90mins ago <tag>
Start relative to now
timew stop 10mins ago
Stop at a past time
timew continue
Resume the last interval
timew continue @<id>
Resume a specific interval
timew cancel
Discard the running interval
timew track <start> - <end> <tag>
Log a closed interval
timew track :yesterday <tag>
Log a whole range hint
timew track <start> for <dur> <tag>
Log by start and length
timew start <tag> :adjust
Fix overlap automatically
timew track ... :adjust
Resolve overlaps with others

Reports

timew summary
Today's intervals and totals
timew summary :ids
Include @ids for corrections
timew summary :week
This week
timew summary :lastweek
Previous week
timew summary :month
This month
timew summary :yesterday
Previous day
timew summary <start> - <end>
Any date range
timew summary <tag>
Only intervals with a tag
timew day / week / month
Chart of tracked time
timew tags
Tags in use
timew gaps
Untracked gaps in a range
timew report <name>
Run an extension report
timew export
Intervals as JSON
timew export <tag> :week
Filtered JSON export
timew get <dom path>
Read a value for scripts

Correct

timew tag @<id> <tag>
Add tags to an interval
timew untag @<id> <tag>
Remove tags
timew retag @<id> <tag>...
Replace all tags
timew annotate @<id> <text>
Attach a note
timew move @<id> <time>
Change the start time
timew shorten @<id> <dur>
Take time off the end
timew lengthen @<id> <dur>
Add time to the end
timew resize @<id> <dur>
Set the duration
timew modify start|end @<id> <time>
Set start or end exactly
timew split @<id>
Divide into two intervals
timew join @<id> @<id>
Merge two intervals
timew delete @<id>
Remove an interval
timew fill @<id>
Stretch over the gap
timew undo
Revert the last command

Dates and durations

now / today / yesterday / tomorrow
Named points in time
sod / eod
Start / end of the current day
9am / 8:12p / 15:30
Clock times
monday / august / 24th
Most recent such day
Names refer to the previous occurrence, not the next.
2026-10-26T09:00
ISO date and time
sow / eow / som / eom / soy / eoy
Start or end of a period
<start> - <end>
Closed interval (or to)
from <start> for <dur>
Start plus length
<dur> ago
Counted back from now
<dur> after <time> / before <time>
Length relative to a time
1.5h / 90mins / 2d
Shorthand durations
PT1H30M
ISO-8601 duration

Hints and config

:yes
Answer prompts automatically
:quiet
Suppress output for scripts
:debug
Show runtime detail
:color / :nocolor
Force colour on or off
:ids
Show interval IDs
:blank
Hide tracked time in charts
:fill
Stretch to fill the gap
:week / :month / :quarter / :year
Current period range
:lastmonth / :lastquarter / :lastyear
Previous period range
timew config
Show all settings
timew config <name> <value>
Set a setting
timew show
Show effective configuration
timew diagnostics
Version and environment info
timew extensions
List installed extensions
timew <cmd> rc.<name>=<value>
Override a setting once

Recipes

A normal day
timew start Project-X codingtimew start 'meeting' standuptimew stoptimew summary :ids
Forgot to start
timew start 45mins ago <tag># or log a closed blocktimew track 9am - 10:30am <tag>
Fix a wrong entry
timew summary :idstimew move @2 8:30amtimew tag @2 billabletimew undo   # if it went wrong
Weekly report
timew summary :week <tag>timew export :lastweek | jq 'length'timew day