Next Up runs in your browser. You connect it to your Google Calendar with a small private script in your own Google account, which takes about 5 minutes. No third-party service is involved, and only you can see your events.
1Create your calendar bridge (once)
This page can't sign in to Google by itself, so you'll add a small read-only script to your own Google account that passes your events to this page.
- Click Copy script below.
- Open a new Apps Script project, signed in with the Google account that has your calendar. Rename it Next Up bridge (click "Untitled project" at the top).
- Select all the starter code, paste the script over it, and press Ctrl+S (Windows) or Cmd+S (Mac) to save.
- Click Deploy → New deployment, click the gear icon next to "Select type" and choose Web app.
- Execute as: Me and Who has access: Anyone. Your calendar still stays private: the script only answers requests that include your personal key, which only you have. ("Only myself" also works in plain Chrome, but browsers that block third-party cookies, such as Brave or Safari, can't connect with it.)
- Click Deploy, then Authorize access and pick your account. Google will say "Google hasn't verified this app". That's expected for a script you made yourself. Click Advanced → Go to Next Up bridge (unsafe), then Allow. The script can only read your calendars, and you can read every line of it below.
- Copy the Web app URL (it ends in
/exec) and paste it into step 2.
3Pick your calendars
Shows today's events from this calendar on the left as a timeline, with a line at the current time and the past dimmed. Great for a time-blocking or "zones" calendar. It doesn't need to be ticked above.
4Alerts and options
Choose how many minutes before an event each alert starts, and its colour. Set minutes to 0 to turn an alert off. Colour changes preview straight away and are kept when you click Save.
Shown in the window and tab title, so you can tell windows apart in split view or the taskbar.
In timer-only mode, show the window name on the
Using more than one Google account?
Open a separate Next Up window for each account. Each window keeps its own name, calendar link, key, calendars, alerts, sounds and theme, so they never overwrite each other.
Set up each account with its own copy of the script, deployed while signed in to that account (step 1).
The next event gets the big timer. Each event after it gets its own smaller timer underneath.
Layout
Drag any header item to a new spot, including between the title row and the buttons. Drag the left or right edge of the timer card to change its width. On smaller screens this puts the timer and the agenda side by side. Your layout is remembered for this window. The lock button in the header turns dragging off until you close the window.
When I stop an alert
Either way, the next alert for the event (for example Soon, then Starting) shows as usual.
Open Next Up in its own window (no tabs or address bar)
The full-screen button in the header hides all of Chrome's toolbars with one click, and Esc brings them back. Chrome only allows full screen after a click, so it can't start that way automatically.
To keep Next Up in its own small window without tabs or an address bar, open it with Chrome's app-window option. The commands below already use this file's location and this window's settings, so each Next Up window gets its own shortcut. If you move the file, come back here and copy them again.
This sets the size the window opens at. You can still drag its edges to resize it.
Windows: right-click the desktop, choose New → Shortcut, paste this as the location, and name it "Next Up":
If Windows says it can't find chrome.exe, Chrome is installed just for your user account. Replace the first part with "%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe".
Mac: open Terminal, paste this and press Return. To keep it as an app, open Automator → New → Application, add a Run Shell Script action, paste the same line, and save it to Applications.
You can resize the window and keep it beside your work. Your settings and theme stay the same, because it's still Chrome on the same page.
Something not working?
- "Couldn't reach your calendar bridge": make sure Chrome is signed in to the Google account that has your calendar, then click Get my key and check it opens without an error. If you use several Google accounts in Chrome, Google may pick the wrong one. Try a Chrome profile that only has this account.
- "Get my key" works but "Load my calendars" can't connect: your script is probably set to Only myself. That needs Google's sign-in cookies, which Brave Shields, Safari and Chrome's "Block third-party cookies" setting block for files on your computer. In Apps Script, go to Deploy → Manage deployments, click the pencil, change Who has access to Anyone, choose Version: New version and deploy. The URL and your key stay the same, and your calendar stays private because the script only answers requests that carry your key.
- Work or school Google account: your admin may block Apps Script or limit who can see a web app. If Deploy is greyed out or blocked, use a personal Google account that can see your calendar, or ask your IT team.
- "Key doesn't match": click Get my key and paste the key it shows. Keys change when you click "Make a new key".
- Changed the script? Use Deploy → Manage deployments, click the pencil, set Version: New version and deploy. That keeps the same URL. A new deployment creates a new URL.
- No calendars listed: Next Up sees the same calendars listed in Google Calendar under "My calendars" and "Other calendars".
- Flashing is too much: turn off "Flash the page during alerts" above, or click Stop flashing during an alert.
- Settings gone: settings are saved in this browser, separately for each page address or file location. If you open Next Up from a different address, move the file, or switch browsers, connect again. Your script and URL still work.
- Stop using it: in Apps Script, go to Deploy → Manage deployments → Archive, and remove access at your Google account's third-party connections.
Reads your Google Calendar through your own read-only script. Only you can see your events, and settings stay in this browser.