Overview
TimeAdder is a focused iOS utility for summing and subtracting a list of time values. Each row
accepts an optional label and separate hours, minutes, and seconds fields. Any field can be
negative, so trimming 30 seconds from a segment is as simple as entering −30 in
the seconds column. A live running total updates instantly as you type.
The app was inspired by Allison Sheridan's time-adder project and extended with iOS-native features, full VoiceOver support, and CSV export.
All data is stored exclusively on your device. TimeAdder makes no network requests, contains no analytics, and collects no personal information of any kind.
Features
Add & Subtract Time
Any field — hours, minutes, or seconds — can be positive or negative. Components are independent, so mixed signs work naturally.
Optional Row Titles
Label each row (e.g. "Intro", "Main Segment") to keep track of what each time value represents.
Live Running Total
The HH:MM:SS total at the bottom updates as you type. Negative totals are shown in red.
Flexible Export
Copy the total, share it as text, or export all rows as a CSV file for use in spreadsheets.
Automatic Persistence
Your entries survive app restarts. No save button needed — changes are persisted automatically.
Full VoiceOver Support
Every interactive element has a descriptive accessibility label. Time values are spoken in natural language.
How to Use
Adding Time Entries
Tap "Add Row"
Press the Add Row button at the bottom of the screen to create a new blank entry.
Enter a title (optional)
Tap the title field at the top of the row and type a descriptive label for the entry.
Fill in the time fields
Tap the HH, MM, or SS fields and enter values. Use a minus sign to subtract that component. All three fields contribute independently to the row total.
Watch the total update
The running HH:MM:SS total at the bottom updates in real time as you type.
Mixed Signs
Each component (hours, minutes, seconds) is treated as an independent signed integer and contributes directly to the row total:
- 1h −30m → row total = +30 minutes (3 600 − 1 800 = 1 800 s)
- −1h 59m 59s → row total = −1 second (−3 600 + 3 599 = −1 s)
- 0h 0m −15s → trims 15 seconds from the overall total
Think of each row as a ledger line. Positive values add time; negative values subtract it. The running total is the algebraic sum of all rows.
Managing Rows
- Delete a row — swipe left on any row to reveal the delete control.
- Clear all rows — tap the trash icon in the top-left toolbar. A confirmation dialog will appear before anything is deleted.
Exporting Results
Tap the share icon (↑) in the top-right toolbar to open the Export sheet. Three options are available:
Copy Total
Copies the running total as a plain HH:MM:SS string to the clipboard. Useful for pasting into show notes, scripts, or editing software timelines.
Share HH:MM:SS Total
Opens the iOS share sheet with the formatted total as text. Share it via Messages, Mail, AirDrop, or any other share destination.
CSV Export
Exports all rows and the grand total as a CSV file or raw CSV text. The CSV format is:
| Title | Hours | Minutes | Seconds | Row Total |
|---|---|---|---|---|
| Intro | 0 | 5 | 30 | 00:05:30 |
| Main Segment | 1 | 12 | 0 | 01:12:00 |
| Trim outro | 0 | −1 | −15 | −00:01:15 |
| Total | 01:16:15 |
CSV fields containing commas or quotation marks are automatically quoted and escaped per RFC 4180.
Accessibility & VoiceOver
TimeAdder is designed to be fully usable with VoiceOver enabled. Every interactive element carries a descriptive accessibility label and, where appropriate, a hint.
- The HH / MM / SS input fields are labelled "Hours", "Minutes", and "Seconds" for VoiceOver — not the abbreviated visual labels.
- The running total panel is a single focusable element read as "Total: 1 hour, 23 minutes, 45 seconds" rather than two separate text elements.
- Per-row totals are read in natural language, e.g. "Row total: negative 1 minute, 30 seconds".
- Toolbar buttons have descriptive labels: "Clear all rows" and "Export".
- When you copy the total, a VoiceOver announcement confirms "Total copied to clipboard".
- The invisible layout spacer row at the bottom of the list is hidden from the accessibility tree.
Negative values that are displayed in red for sighted users are also communicated through spoken labels — VoiceOver reads "negative" before any negative duration.
Technical Details
Requirements
- iOS 26.0 or later
- iPhone and iPad supported
- Mac Catalyst: not supported
Data Storage
Entries are encoded as JSON and stored in UserDefaults under the key
TimeAdder.entries.v1. This storage is local to your device and is included
in standard iOS device backups (iCloud or iTunes/Finder). No data is ever transmitted
to any server.
No Network Access
TimeAdder contains no network-facing code. It requests no network entitlements and makes no outbound connections of any kind.
Dependencies
None. TimeAdder uses only Apple system frameworks: SwiftUI, Foundation, and UIKit.
Source Code
TimeAdder is open source under the MIT License. The source code is available at github.com/grumptech/timeaddr.