A lightweight macOS menu bar app that shows UTC time, designed to be visually distinct from your system clock so you never confuse the two.
π 14:30:25 UTC
Status: 1.0. Shipped: display options, visual distinction, English + δΈζ UI (switchable at runtime), bidirectional timezone converter, Liquid-Glass popover, in-app launch-at-login, and an About/version panel.
If you work across timezones β on-call rotations, distributed teams, aviation / shipping logs, log files in UTC, AWS console regions, etc. β you usually want both your local time and UTC visible at a glance.
The standard approaches all have issues:
- macOS lets you switch the system clock to UTC, but then you lose local time.
- Adding a second clock via iStat Menus costs money and brings a lot of features you may not need; full multi-timezone planners like Clocker or There work great but optimize for tracking people across cities, not for one clean UTC display.
- Most free menu-bar UTC clocks render UTC in the same font, weight, and color as the system clock right next to them, which defeats the point β you have to read the digits to tell them apart.
UTCMenuBar's whole pitch: show UTC, and let you make it look obviously different from the system clock with a few clicks. No account, no subscription, no telemetry, ~5 MB binary.
- UTC time in the menu bar, prefixed with
πand suffixed withUTC - Display options (toggleable from the dropdown):
- Show date alongside time
- Compact time (
HH:mminstead ofHH:mm:ss) - Compact date (
MM/ddinstead ofyyyy-MM-dd)
- Visual distinction options (Appearance submenu and Settings window):
- Font family β System / Menlo / SF Mono, plus any installed font via the macOS font panel
- Weight β Regular / Medium / Semibold / Bold
- Size β Small / Standard / Large (Β±2pt around the menu bar default)
- Color β Default / Blue / Green / Orange / Purple / Red (system dynamic colors, dark-mode safe)
- Icon prefix β Globe
π/ Clockπ/ Compassπ§/ Earthπ/ none (5 options) - Decorator β none /
[brackets]/(parentheses)/βbarsβ
- Liquid-Glass popover β left-click the menu bar icon to open a popover
(
ultraThinMaterial) with a large live UTC readout and quick buttons for Settings, the Converter, and Quit. Right-click still shows the classic menu. - Bidirectional timezone converter (
βT) β type a UTC time and see the equivalent in selected zones, or type a local time and read back UTC. - Localized UI β English and Simplified Chinese, switchable at runtime from the Appearance βΈ Language submenu or the Settings window; defaults to your system language on first launch.
- Launch at login β toggle inside Settings (backed by
SMAppService); no manual System Settings drag required. - Settings window with live preview, opens with
β, - About / version panel β shows the version baked in from the release tag
- Persists all settings to
UserDefaults; survives restarts - Multi-display aware β the popover clamps its position to the active screen's visible frame (menu-bar/notch safe)
- Dock-less (
LSUIElement); pure menu bar accessory app - Free, open source, no account, no telemetry, no network requests
Screenshots are being added β see Releases for the app in the meantime.
Requirements: macOS 13+, Apple Silicon. (Intel Macs: build from source β see below.)
-
Grab the latest
UTCMenuBar-vX.Y.Z-arm64.zipfrom Releases. -
Unzip it and move
UTCMenuBar.appto/Applications. -
First launch β important: the build is not signed or notarized (this is a free hobby project without a paid Apple Developer account), so macOS Gatekeeper will block a plain double-click with a message like βUTCMenuBar canβt be opened because Apple cannot check it for malicious software.β This is expected. To open it the first time:
- Right-click (or Control-click)
UTCMenuBar.appβ Open β click Open in the dialog. macOS remembers your choice, so every launch after that is a normal double-click. - If you donβt see an Open button, go to System Settings β Privacy & Security, scroll to the message about UTCMenuBar, and click Open Anyway.
Prefer not to bypass Gatekeeper? Build from source instead (Option B) β a build you compiled yourself runs without any prompt.
- Right-click (or Control-click)
-
(Optional) Verify the download against the SHA-256 printed in the release notes:
shasum -a 256 UTCMenuBar-vX.Y.Z-arm64.zip
To start it automatically at login: open Settings (β,) and toggle
Launch at login β the app registers itself via SMAppService, no manual
drag into System Settings required.
No Gatekeeper prompt, and works on Intel too. Requirements: macOS 13+, the Swift 6 toolchain (Xcode 15+).
git clone https://github.com/NestDream/UTCMenuBar.git
cd UTCMenuBar
./scripts/build-app.sh # produces UTCMenuBar.app in the repo root
cp -R UTCMenuBar.app /Applications/
open /Applications/UTCMenuBar.appswift run UTCMenuBarThis works, but the menu bar icon only stays visible while the process is
running β it is not daemonized. Use the .app bundle for daily driving.
Left-click the π icon to open the Liquid-Glass popover β a large live
UTC readout with quick buttons for Settings, the Converter, and Quit.
Right-click the icon for the classic dropdown menu:
- Toggle Show date / Compact time / Compact date
- Open the Appearance submenu to pick font / weight / size / color / icon / decorator (pick Custom⦠under font to choose any installed font)
- Pick a Language (English / δΈζ) β same submenu, switches instantly
- Open the Timezone converter (
βT) to convert UTC β other zones - Open Settingsβ¦ (
β,) for the same controls in a window with live preview, plus the Launch at login toggle - Quit (
βQ) to exit
UI is available in English and Simplified Chinese. The app picks one based on your system language on first launch and you can switch any time.
swift build # debug build
swift run UTCMenuBar # run from CLI
./scripts/test.sh # run the full test suite
./scripts/build-app.sh # build release UTCMenuBar.app
./scripts/build-app.sh debug # build debug UTCMenuBar.appThe test suite is a custom runner (no XCTest / swift-testing) β see
Tests/UTCMenuBarTests/. Property tests run 100
randomized iterations per case.
Package.swift # SPM manifest, single source of truth
Sources/
main.swift # AppDelegate + NSApp entry point
SettingsWindowController.swift
StyleOptionsStore.swift # observable single source of truth for StyleOptions
UTCMenuBarLib/ # testable, Sendable-clean library
DisplayOptions.swift # show date / compact time / compact date
StyleOptions.swift # font / weight / size / color / decorator enums
TimeFormatter.swift # Date + DisplayOptions -> "π 14:30:25 UTC"
StyledTextBuilder.swift # plain text + StyleOptions -> NSAttributedString
MenuBuilder.swift # builds the NSMenu from current options
SettingsViewModel.swift # backing model for the Settings window
Tests/UTCMenuBarTests/ # custom runner; one file per module
specs/
display-options/ # requirements.md / design.md / tasks.md
visual-distinction/ # requirements.md / design.md / tasks.md
scripts/
build-app.sh # assembles UTCMenuBar.app
test.sh # runs the test executable
Three small modules in UTCMenuBarLib:
DisplayOptionsβ toggleable display flags + UserDefaults round-trip.TimeFormatterβ pure function:(Date, DisplayOptions) -> String, always wrapping inπ β¦ UTC.StyleOptions+StyledTextBuilderβ visual styling enums and theNSAttributedStringbuilder applied to the status item'sattributedTitle.MenuBuilderβ stateless builder that re-emits the wholeNSMenuon every change (cheap; small menu).
The AppDelegate in main.swift wires those together with a 1 s Timer,
the NSStatusItem, and the StyleOptionsStore listener.
For deeper docs, see the per-feature spec directories (specs/<feature>/)
and CLAUDE.md. Specs follow a requirements / design / tasks
split, written in Chinese and using EARS-style (WHEN / IF / THE)
acceptance criteria.
Most pages like this overclaim. Below is a feature-by-feature comparison against the Mac menu-bar timezone tools that actually exist on GitHub or in the wild as of May 2026, with star counts and last-commit dates so you can sanity-check the landscape yourself.
UTCMenuBar is deliberately narrow: show UTC, make it visually distinct. It is not a meeting planner, world-clock dashboard, or people tracker. For those, the right answer is one of the other tools below.
A search for macos menu bar UTC clock, macos status bar timezone swift,
and topic:menubar timezone on GitHub plus the well-known paid players
turns up roughly four useful clusters of tools:
- UTC-only OSS clocks.
netik/UTCMenuClock,jonblatho/SwiftUTCMenuClock,tra0x/ZuluBar, and this project. - Multi-timezone OSS clocks / planners.
n0shake/Clocker,dena-sohrabi/There,kartik-venugopal/world-clock,patrik-bernas/whenish,shivanshthapliyal/meridian. - Closed-source paid suites. iStat Menus (system monitoring + clocks); App Store options like Menu World Time and World Clock Pro (closed source, paid, not benchmarked here because public feature pages don't disclose enough to compare fairly).
- The "people, not timezones" niche. There β a
distributed-team tracker that the open-source
dena-sohrabi/Thererepo mirrors.
| Project | Stars | Last push | License | Notes |
|---|---|---|---|---|
n0shake/Clocker |
608 | 2026-05-13 | MIT | Most-starred OSS option; full meeting planner |
dena-sohrabi/There |
272 | 2024-09-18 | MIT | Free; closely tied to there.pm |
netik/UTCMenuClock |
252 | 2025-12-12 | Apache-2.0 | The OG; macOS 15+; Objective-C |
amiantos/dotbeat |
40 | 2024-06-16 | MPL-2.0 | Swatch Internet Time, not regular zones |
kartik-venugopal/world-clock |
21 | 2024-01-10 | MIT | macOS 10.12+; minimal |
jonblatho/SwiftUTCMenuClock |
13 | 2021-10-26 | MIT | Effectively abandoned (no commits in 4+ years) |
tra0x/ZuluBar |
0 | 2026-05-10 | MIT | New; signed build is $5, source build free |
patrik-bernas/whenish |
0 | 2026-05-09 | MIT | New; multi-zone with availability bars |
shivanshthapliyal/meridian |
2 | 2026-04-01 | MIT | New; macOS 26.0 (Tahoe) only |
NestDream/UTCMenuBar (this) |
n/a | active | MIT (planned) | UTC-only, focuses on visual distinction |
Takeaway: most OSS UTC-specific tools are either dead (SwiftUTCMenuClock) or pre-1.0 (ZuluBar, this project). The OG
netik/UTCMenuClockis alive again as of late 2025 but requires macOS 15+ and is Objective-C only. The well-maintained options are multi-timezone planners (Clocker, There, Whenish), not bare UTC clocks.
The columns below are: UTCMenuBar (this app), netik/UTCMenuClock (the OG OSS UTC clock), ZuluBar (recent OSS UTC clock), Clocker (most-starred OSS multi-timezone), There (people tracker, OSS + paid web companion), iStat Menus (commercial system suite). Cells: β = supported, β = not supported, β = partial, ? = not documented on the public page.
| Dimension | UTCMenuBar | UTCMenuClock | ZuluBar | Clocker | There | iStat Menus |
|---|---|---|---|---|---|---|
| License / cost | MIT, free | Apache-2.0, free | MIT (free source / $5 signed build) | MIT, free | MIT, free | Closed source, paid 1 |
| Last commit (2026-05) | active | 2025-12 | 2026-05 | 2026-05 | 2024-09 | continuous |
| macOS minimum | 13 | 15 | 14 | 14 | 13 | varies (current 6.x) |
| Open-source | β | β | β | β | β | β |
| No account / no telemetry | β | β | β | β | β | ? |
| Time display | ||||||
| Shows UTC in menu bar | β | β | β | β 2 | β 3 | β |
| Multiple timezones in menu bar | β | β | β | β | β | β |
| Per-timezone labels / avatars | β | β | β | β (custom labels) | β (photos/handles) | β (custom labels) |
| 24h / 12h toggle | β 4 | β | ? | β | β | β |
| Show seconds toggle | β | β | β | β | ? | β |
| Date display | β | β | β | ? | ? | β |
| Compact time / date format | β | β | β (seconds only) | β (compact menubar mode) | ? | β |
| ISO-8601 / RFC 3339 menubar | β | β | β | ? | β | ? |
| Custom format string | β | β | β | β | β | β |
| Visual distinction | ||||||
| Custom font family | β (System / Menlo / SF Mono + any installed font) | β | β | β | β | ? |
| Custom font weight | β | β | β | β | β | ? |
| Custom font size | β (Β±2pt) | β | β | β | β | ? |
| Custom color | β (6 system-dynamic colors) | β | β | β (4 themes, popover only) | β | ? |
| Decorator / brackets / bars | β (4 styles) | β | β (Z / UTC suffix) |
β | β | β |
| Custom emoji prefix | β (5 options) | β | β | β | β | β |
| Interactions | ||||||
| Click-to-copy current time | β 4 | β (current format + ISO-8601) | β (display / Unix / RFC 3339) | ? | β | ? |
| Bidirectional timezone converter | β | β | β | β (time scrubber) | β | ? |
| Time-travel slider / scrubber | β | β | β | β (Β±7 days, 15-min steps) | β | β |
| Global hotkey | β | β | β | β (βL) | ? | ? |
| Settings window with live preview | β | β | β | β | β | β |
| Integrations | ||||||
| Launch at login (in-app) | β | β | ? | β | ? | β |
| Calendar / meeting integration | β | β | β | β (Apple Calendar, one-click join Zoom/Meet/Teams) | β | β |
| Sun / moon data | β | β | β | β (day/night) | β | β |
| Weather data | β | β | β | β | β | β |
| iCloud sync | β | β | β | β | β | ? |
| Multi-display awareness | β 5 | β 5 | β 5 | β 5 | β 5 | β 5 |
| Localization (UI) | β (English + δΈζ) | β (English) | β (English) | β (Crowdin community) | β (English) | β |
| Distribution (.app available) | unsigned binary on GitHub + source | unsigned binary on GitHub | source build free / signed $5 | Homebrew cask + GitHub release | Homebrew cask + there.pm | direct buy + Setapp |
1 iStat Menus' single-license price is no longer published on the
vendor's public page (shows as $? placeholder); historically it has been
in the ~US$10β15 range. It is also bundled in Setapp
at $9.99/month.
2 Clocker can pin any timezone to the menu bar, including UTC,
but it's a multi-timezone tool first.
3 There supports raw UTC offsets per person, but its primary unit
is "a person in a city," not "UTC."
4 On the Roadmap for UTCMenuBar.
5 No menu-bar app on macOS gets per-display menu bars; this is a
macOS limitation, not a per-app one.
Sources verified May 2026: GitHub repo metadata (stars, last push, license)
via the GitHub API; READMEs of
Clocker,
There,
UTCMenuClock,
ZuluBar,
SwiftUTCMenuClock,
world-clock,
whenish,
meridian;
vendor pages there.pm,
iStat Menus,
abhishekbanthia.com/clocker.
A ? means the public docs don't say either way β not a guess.
This list isn't trying to win every row. Pick the one that matches your job:
-
Pick UTCMenuBar if you only need UTC, you want it to look unambiguously different from the system clock right next to it, you want a Swift / AppKit OSS app you can audit, no account / payment / telemetry, and you'd use the built-in UTC β zone converter. Best for: SREs / on-call / aviation / log triage / AWS console work.
-
Pick
netik/UTCMenuClockif you want a long-established OSS UTC clock with built-in launch-at-login and click-to-copy in ISO-8601, and you're already on macOS 15+. It's the most-starred UTC-only OSS option (252 stars, active again in late 2025); Objective-C, no visual styling, but solid. -
Pick
tra0x/ZuluBarif click-to-copy in multiple formats (display, Unix epoch, RFC 3339) and a global hotkey are your top priorities, and you don't need visual styling. Pay $5 for the signed build or build from source. Brand-new project, low star count β buyer beware on stability. -
Pick
n0shake/Clockerif you need a real meeting planner β multiple timezones, calendar integration, time scrubbing, one-click Zoom/Meet/Teams join, iCloud sync. It's the most capable OSS option and it's free. Worth trying first if you're not sure you specifically need UTC. -
Pick There (there.pm or the GitHub project) if you manage a distributed team and want to see people (with photos and Twitter/Telegram handles) rather than timezones. Free. Shines in 1:1 lead / IC contexts.
-
Pick
patrik-bernas/whenishif you want a free OSS multi-timezone view with per-city availability bars and overlap visualization, and don't care about UTC specifically. -
Pick iStat Menus if you already want CPU / RAM / network / battery / weather widgets in the menu bar β its world clock is a small bonus. Don't buy it just for the clock.
Things competitors do better, today:
- Single timezone (UTC) in the menu bar. If you need UTC and PT both pinned in the menu bar at once, UTCMenuBar can't do it today. Clocker, There, Whenish, world-clock, and Meridian all can. (The shipped converter handles ad-hoc UTC β zone math, but that's a different shape from "multi-timezone in the menu bar.")
- No click-to-copy yet. ZuluBar and UTCMenuClock both ship this; it's on the roadmap here.
- No 24h/12h toggle. Currently 24h-only. (Planned.)
- No calendar / meeting integration. Clocker is the gold standard here; this app explicitly does not try to compete.
- No Mac App Store build, and release binaries are unsigned / not notarized.
Prebuilt
.appzips are on GitHub Releases, but because they aren't signed you need a one-time right-click β Open (see Install), or build from source to avoid the prompt. - Just reached 1.0 β young project, modest star count, not yet battle-tested. Bug reports welcome.
Concrete next steps, roughly in priority order:
- 24h / 12h toggle. Currently 24h-only.
- Click-to-copy the current UTC timestamp in multiple formats (Unix epoch, ISO 8601 / RFC 3339).
- ISO-8601 / custom format string for the menu bar readout.
- Free-text prefix / suffix + full emoji picker. Beyond the five
built-in icons, let users supply any string or emoji (e.g.
Z,Zulu). - Global hotkey to open the popover, Settings, or the converter.
- Mac App Store distribution.
- Signed / notarized release builds + GitHub Releases artifacts.
Lower priority:
- Multiple-timezone menu bar display (would expand scope significantly β may stay out of scope on purpose).
- More decorators / more colors / per-glyph styling.
Contributions are welcome. The project follows a spec-driven workflow:
- Open an issue to discuss the feature first.
- Add
specs/<feature>/{requirements,design,tasks}.mdmirroring the existing two specs (Chinese is fine; English also fine β match the existing style if you're extending an existing spec). - Implement against
tasks.md, ticking boxes as you go. - Add a corresponding test file under
Tests/UTCMenuBarTests/and register it inTestRunner.swift. Each correctness property indesign.mdshould have a matching test. - Run
./scripts/test.shand./scripts/build-app.shbefore sending a PR.
Conventions worth knowing:
- No external dependencies. AppKit + Foundation only.
- Library code in
UTCMenuBarLibmust bepublicandSendable-clean. - UserDefaults keys use a feature-prefix (
displayOptions.*,styleOptions.*). - Don't edit anything under
_archive/β that's a frozen Xcode project.
See CLAUDE.md for the full set of conventions.
Licensed under MIT.