
Track time until important deadlines, events, or milestones with visual progress indicators.
Line, Circle, SemiCircle, and Square (from progressbar.js, support for custom shapes soon!)<vault>/.obsidian/plugins/countdown-to/Create a countdown progress bar by adding a code block with the countdown-to language identifier:
```countdown-to
title: Project Deadline
startDate: 2025-03-12
startTime: 08:00:00
endDate: 2025-04-11
endTime: 14:00:00
type: circle
color: #ff5722
trailColor: #f5f5f5
infoFormat: {percent}% complete - {remaining} until {end:LLL d, yyyy}
updateInRealTime: true
updateIntervalInSeconds: 30
```
If no startDate and endDate is provided the countdown will assume the current day. So at the very least the widget requires a start time and end time. If that is the case the countdown will run daily.
startDate: Start date for the progress calculation (format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)startTime: Start time for the progress calculation (format: HH:MM:SS, optional - defaults to 00:00:00)endDate: The target date to count down to (format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)endTime: The target time to count down to (format: HH:MM:SS, optional - defaults to 00:00:00)Note: You can use either:
startDate: 2025-01-01 + startTime: 09:00:00startDate: 2025-01-01T09:00:00 startTime will be ignored. This logic is the same for endDate and endTimeDefault info format upcoming.title: Title of the countdown (show above the progress bar)type: Progress bar type - line, circle, semicircle, or square (defaults to line)color: Color for the progress bar (HEX format)trailColor: Color for the incomplete part of the progress bar (HEX format)progressType: progress (default) or countdownonCompleteText: Text to display when the countdown is completeinfoFormat: Custom format for the information textupdateInRealTime: Whether to update the progress bar in real-time (true/false)updateIntervalInSeconds: How often to update the progress barThe infoFormat parameter supports various placeholders and Luxon formatting options:
{percent} - Percentage of completion{start} - Start date (ISO format){end} - End date (ISO format){current} - Current date (ISO format){remaining} - Remaining time in human-readable format{elapsed} - Elapsed time in human-readable format{total} - Total duration in human-readable formatYou can format dates and durations using Luxon's formatting syntax:
{start:format} - Format start date{end:format} - Format end date{current:format} - Format current date{remaining:format} - Format remaining duration{elapsed:format} - Format elapsed duration{total:format} - Format total durationFor example:
{end:LLL d, yyyy} displays the end date as "Apr 11, 2025"{end:EEEE, MMMM d, yyyy} displays as "Thursday, April 11, 2025"See the Luxon formatting reference for all available format tokens.
Countdown To is compatible with Obsidian Parameters. To use them you use the same parameters explained in #How to Use but have them prefixed with countdown-, for example:
---
countdown-startDate: 2025-08-31
countdown-startTime: 19:00
countdown-endDate: 2025-09-15
countdown-endTime: 19:00
countdown-title: Property Title Test
countdown-color: "#ff5722"
countdown-type: Line
countdown-trailColor: "#ff0022"
countdown-progressType: progress
countdown-updateInRealTime: true
countdown-updateIntervalInSeconds: 10
countdown-infoFormat: "{percent}% complete - {remaining} until {end:LLL d, yyyy}"
countdown-infoFormatUpcoming: Upcoming {title}
countdown-onCompleteText: Completed {title}
---
These parameters can be overriden in a countdown-to but they will now be the default value for the file and they don't need to be written in a countdown-to block.
```countdown-to
```
Will now work even with no startDate
You can configure default settings for all progress bars in the plugin settings:
All settings can be overridden in individual progress bar code blocks.
A custom CSS snippet can be created in your ./.obsidian/snippets and the classes on https://github.com/guicattani/obsidian-countdown-to/blob/main/styles.css can be overriden.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
If you encounter any issues or have feature requests, please open an issue here on GitHub.