---
title: Appointments and repeats
description: How a time at the start of a line makes an appointment, how the repeat marker makes appointments and tasks come back, and how to call off, move or end a single occurrence or a whole series.
reviewed: 2026-10-28
---

## An appointment is a line with a time {#appointments}

A line that begins with a clock time is an appointment. There is no keyword - you write the time
the way you would on paper:

```tagwerk
09:30-11:00 Sprint review @team
13:00 Lunch with @anna
9:00 - 9:30 Standup
```

| Rule | Example |
| --- | --- |
| The time stands at the very start of the line. An indented time is ordinary text. | `13:00 Dentist` |
| One or two digits for the hour (0-23), two for the minute. | `7:05 Train`, not `25:00 Call` |
| An end time is optional, after a hyphen with at most one space on each side. | `09:30-11:00`, `9:00 - 9:30` |
| Text has to follow the time. `13:00` alone is not an appointment. | `13:00 Dentist` |

Tags and contacts work on an appointment line as everywhere else. An appointment has no checkbox
and no priority; a time after a task's checkbox is a "not before" time, which is described under
[Tasks](../tasks/index.md#priority).

To change a time, tap it in the note. The sheet *Edit time* offers *Start*, *End*, *Repeat* and *Reminder*.
Moving the start takes the end with it, so the appointment keeps its length; past midnight the end
wraps (`23:30-00:30`). In
the note's toolbar, *Time* does the same for the line the cursor is on, or inserts a time when the
line has none. The calendar can create an appointment from an empty hour - see
[Calendar](../calendar/index.md).

## The repeat marker {#marker}

How often something comes back is written into the line itself, as a marker starting with `R/`.
The same marker works on appointments and on tasks:

```tagwerk
09:30-10:00 Standup @team R/P1W
19:00 Mastermind R/2026-09-04/P4W
- [ ] Take out the bins R/2026-08-12/P1W
- [ ] Physio R5/P1W
```

| Marker | Meaning |
| --- | --- |
| `R/P1D`, `R/P3D` | Every day, every three days. |
| `R/P1W`, `R/P2W` | Every week, every two weeks. |
| `R/P1M`, `R/P1Y` | Every month, every year. |
| `R/2026-08-12/P1W` | Every week, counted from 12 August 2026 (an anchor). |
| `R3/P1W` | Weekly, three more times; then it stops. |
| `R/FREQ=WEEKLY;BYDAY=MO,TH` | Every Monday and Thursday. |
| `R/FREQ=MONTHLY;BYDAY=3TU` | The third Tuesday of every month. |
| `R/FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1` | The last working day of the month. |
| `R/2026-09-15/FREQ=MONTHLY;BYDAY=3TU;UNTIL=20270630` | The third Tuesday, from 15 September 2026 until 30 June 2027. |

The short form is an ISO 8601 repeating interval: `R`, an optional count, an optional start date,
and a length in days (`D`), weeks (`W`), months (`M`) or years (`Y`). Where a length cannot say the
rhythm, the marker holds a calendar rule from RFC 5545 (`FREQ=...`) instead. Both are standards you
can look up, and other calendar tools read them.

- Hours are not possible: `PT2H` is plain text.
- A rule that a length says just as well is written as the length - `R/FREQ=WEEKLY` becomes
  `R/P1W`.
- A rule without meaning stays plain text and is not corrected: `R0/P1D`, `R/P0D`, an impossible
  date such as `R/2026-02-31/P1M`, or a calendar rule with `COUNT` (the count belongs in front:
  `R3/FREQ=...`).

In the note the marker is drawn as a short badge with ↻ - `R/2026-08-12/P1W` as "↻ Wed",
`R/FREQ=MONTHLY;BYDAY=3TU` as "↻ 3. Tue". When
the cursor is on the line, the characters come back so you can edit them. The full grammar is in
the [format specification](../../format.html#recurrence).

## The repeat sheet {#repeat-sheet}

You do not have to type the marker. The repeat sheet writes it for you. It opens from *Repeat* in
the note's toolbar (for the line the cursor is on), from the *Repeat* row of the task form, and
from the *Repeat* row of the *Edit time* sheet. Each row shows the current marker or *Never*;
*Change* opens the sheet.

![The repeat sheet on a phone: every 1 month, on the 3rd Tuesday, with the next three dates](../shots/en/repeat-dark.webp "The repeat sheet: every third Tuesday of the month, and the next dates it falls on.")

| Control | What it sets |
| --- | --- |
| *Every* with *Days*, *Weeks*, *Months*, *Years* | The basic rhythm. |
| *Keep to the calendar* | Writes the day as the start date (anchor). Off, a repeating task counts from the day it stands on. |
| *On certain weekdays*, *On a weekday of the month*, *On a weekday of the year* | Weekday chips. For months and years you also choose which one: 1st, 2nd, 3rd, last ... |
| *Months of the year*, *Days of the month*, *Weeks of the year*, *Days of the year*, *Which of the matching days*, *Week starts on* | Further parts of a calendar rule, folded away until you open them. Which of them appear depends on the rhythm. |
| *Only a set number of times* | A count (*Number of repeats*). |
| *Ends on a date* | An *End date*. This always writes a calendar rule. |

Under the controls the sheet shows what it will write:

- *Next:* with the next three dates the rule falls on. A rule that never falls on any date says
  *This rule never comes round again.*
- The marker itself, and whether it is written as an ISO 8601 interval or as a calendar rule.
- A combination the standard does not allow is refused: the sheet says *The standard does not
  allow this combination, so it cannot be written.* and the button stays disabled.

A rule you typed yourself that the controls cannot reproduce exactly is kept unchanged. The sheet
says *This rule was not written here. Change anything above and it is replaced.* - as long as you
touch nothing, *Update* writes it back as it was.

The button reads *Insert* on a line without a marker and *Update* on a line that has one.

## Repeating appointments on other days {#occurrences}

A repeating appointment stays on the day it was written on. The other days it falls on are not
written into their notes; tagwerk shows them where you look:

- **The calendar** draws them with a dashed border and ↻, also on days that have no note yet.
- **The day view** shows them in a strip above the note, *From a repeat*, on every day they fall
  on and have no line yet.

![The day view on a phone with the strip "From a repeat" above the note: 19:00 Mastermind, with "Write it in" and a "..." button](../shots/en/day-dark.webp "A repeating appointment that falls on this day appears above the note until you write it in.")

In the strip:

- *Write it in* writes the occurrence into the day's note as a real line, under the same heading
  as the line it comes from. The line keeps the marker, and the series continues from it.
- The *...* button (*Choose what happens*) opens the sheet *Repeating appointment* with the choices
  described below. Nothing is written until you choose.
- The title opens the line the series is written in: its day, with the cursor on that line. That is
  where you change its rhythm, its count or its words.

The strip is free. You do not need to write occurrences in - the calendar and the widget show them
either way.

## Changing one occurrence {#occurrence}

The sheet *Repeating appointment* asks what you mean, and tagwerk decides what goes into the
files:

| Choice | What is written |
| --- | --- |
| *This one is off* | A struck line in this day: `19:00 ~~Mastermind~~`. The series continues. |
| *This one is at another time* | Asks for the new time. A struck line at the old hour and a plain line at the new hour, both in this day. The series continues at its usual time. |
| *Different from here on* | Asks for time and rhythm. A new line with the new shape on this day; the older line is limited so that it ends before this day. |
| *Pause until...* | Asks for a day. The older line ends before this occurrence; a new line starts on the first occurrence on or after the chosen day. Nothing is shown in between. |
| *End the series* | The older line is limited so that it ends before this occurrence: this one and all later ones are gone. Past occurrences stay. To keep this one, write it in first and end the series there. |
| *Go to the original entry* | Nothing. Opens the line the series is written in, like the title of the sheet and the title in the strip. |

"Limited" means the line gets a count, for example `R4/2026-09-04/P4W`, or loses its marker when
nothing is left after its own day. Earlier days in the calendar stay as they were.

The same choices are available for a line that is already in the note and carries a marker - the
original line of the series, or an occurrence you wrote in. Tap its time in the note, and in
*Edit time* press the cross beside the marker; *Change* beside it leads to the same choices, so a
new rhythm goes in through *Different from here on* and the days before keep theirs. *Write it in*
is not offered there, and *Go to the
original entry* leads to the older line of the series - for the original line itself it is not
offered. *End the series* keeps the line you are on as a plain appointment and takes only its
marker. If the line you
call off is the one that carries the rule, tagwerk first hands the series on to its next date, so
calling off one meeting does not end the others.

### Cancelled lines

An appointment whose whole text is struck through - `19:00 ~~Mastermind~~` - is called off.

- In the note the line is shown struck, and the tildes stay visible so you can delete them.
- The calendar still draws it, struck: the hour has become free.
- On a day the series falls on, this line is what takes the occurrence off. Delete the line and the
  occurrence is back.
- Only the whole text counts. `19:00 Mastermind with ~~Paul~~` is a meeting without Paul, not a
  cancellation.

### Moving an occurrence to another day

The strip and the sheet move an occurrence to another hour on the same day. To move it to another
day, call it off with *This one is off* and write the appointment into the other day without a
marker. On Android the widget card does both in one step (see below).

## Repeating tasks {#repeating-tasks}

A repeating task is not written into later days in advance. Its line exists once, and the next copy
is written when you finish with the current one:

- When you tick it off or drop it, tagwerk appends the next occurrence to the day it is next due,
  under the same heading. The line you settled stays as a record.
- The next date is the first one in the rhythm after the task's own day that is not before today.
  Today counts: a daily task from yesterday ticked off this morning comes back today. A weekly task
  ticked off three weeks late skips the dates that went by.
- The copy carries the marker: unchanged when it repeats for ever, one less when it is counted
  (`R5/` becomes `R4/`), and no marker on the last copy of a counted run. After the end date of
  `UNTIL` no copy is written.
- Sub-tasks arrive open again. Readings stay behind, so `#coldshower:5` arrives as `#coldshower:`
  and waits for the next value.
- A sub-task with a marker of its own comes back with its parent when the parent repeats too, and
  only there. Under a task that does not repeat, it writes its own copy.

Without an anchor the next date is counted from the day the task stands on. With an anchor -
*Keep to the calendar* in the repeat sheet - the dates are the anchor plus whole intervals. The
difference shows when a task is moved:

| Marker | Wednesday's bins, moved to Thursday and ticked off there |
| --- | --- |
| `R/P1W` | Next copy on the following Thursday. The rhythm moves with the task. |
| `R/2026-08-12/P1W` | Next copy on the following Wednesday. The dates stay on the calendar. |

In the task list a repeating task carries ↻; pointing at it (or a screen reader) gives the rhythm in
words. In the calendar the open copy's next dates are drawn as previews, from today on: an overdue
task shows the copies that ticking it off today would write. A tap on a preview offers
*Go to the task* and *End the repetition*. To stop a task from repeating you can also remove the
marker in the task form (the cross in the *Repeat* row); the task itself stays.

## On the Android widget {#widget}

Repeating appointments appear on the home-screen widget on every day they fall on. A tap on an
appointment row opens a card for that one appointment:

- *Another time* moves it to another hour.
- *This one is off* calls it off.
- *Move to day* with a row of days, and *Another day* for any other date, moves it to another day.
  For an occurrence of a series, the old day keeps a struck line and the new day gets a line
  without the marker; a single appointment simply moves.

The card follows the same rules as the app; if the occurrence is the line that carries the rule, the
series is handed on first. Cancelled occurrences are left out of the widget. A configured widget can
show them, struck, with *Show cancelled appointments*.

> [!PRO]
> Widget settings - including *Show cancelled appointments* - are part of tagwerk Pro. Repeating
> appointments and tasks, the repeat sheet, the strip above the note and the widget card are free.
