Excel rota to calendar
Your rota is a spreadsheet. Your calendar wants a list.
Somebody's sent you an Excel file, or a link to a Google Sheet, with the whole department's shifts on it. You want yours on your phone, next to everything else in your life, so you can stop opening a spreadsheet every time you need to know whether you're working on Saturday.
You can do this by hand for free, and the full method is below. One thing to know before you start: it's a one-time copy. The day your rota changes, your calendar quietly stops being right. The second half of this page is about what to do instead.
Why this is harder than it looks
A rota is a grid. Dates run along one edge, names run down the other, and your shifts are the cells where your line meets each date. It's a sensible way to get forty people onto one sheet of paper.
A calendar import wants a list: one row per event, each with its own name, date and times. Nothing about a rota is in that shape. So the job isn't really converting a file. It's rewriting your own line of the grid as a list, by hand, in a second spreadsheet.
Then there's the codes. Your rota says LD or N or TW, not 08:00 to 20:30. Somewhere on the sheet, or in the rota coordinator's head, is the key that turns those into real times. You'll need it, because a calendar entry with no times on it isn't much use to anyone.
Doing it by hand, step by step
This works for Google Calendar and Outlook, which both take a CSV file. Apple Calendar doesn't accept CSV, so on an iPhone or a Mac you'll need to convert the file again at the end.
- 1Work on a copy, never the original. If the rota's a shared sheet, take your own copy first. You're about to delete most of it, and doing that to the version your whole department relies on would make for a bad afternoon.
- 2Find your line and write down your shifts. Follow your name across the row, or down the column, and note the date and shift code for every day you're working. Skip the blanks and the days off.
- 3Find the key and turn the codes into times. Look for a legend somewhere on the sheet, often on another tab, giving each code a start and a finish. If there isn't one, you'll have to ask.
- 4Start a fresh sheet with these exact headings in the first row, spelled exactly like this:
Subject, Start Date, Start Time, End Date, End Time - 5Add one row per shift. Subject is whatever you want the entry called, so "Long day" or "Night". The dates and times are the ones you worked out in step 3. Watch the nights: a shift finishing at 08:00 the next morning needs an end date of the following day, and that's the row people get wrong most often.
- 6Write every date month first. Calendar imports generally read
06/07/2026as 6 July, not 7 June, and a UK sheet will have it the other way round. Get this wrong and a whole month of shifts lands on the wrong days without a single error message. - 7Save it as a CSV. Google Sheets: File, then Download, then Comma Separated Values. Excel: File, then Save As, then choose CSV. Save a copy rather than saving over your sheet, because CSV keeps the values and throws away every formula.
- 8Import it into a new, empty calendar. Not your main one. An import can't be undone in one go, so if anything's wrong you'd be deleting shifts one at a time. Give them their own calendar and you can throw the lot away and start again.
Doing this for Google Calendar?
The import screen and the exact menu names are on our Google Calendar guide, along with the option most people actually want instead.
What about pasting it into ChatGPT?
Fair question, and worth answering properly, because it's the first thing most people try now. Paste a small, tidy rota into ChatGPT or Claude and ask for a calendar file, and you may well get one. For a simple grid it can genuinely work.
It gets shaky quickly, though, and it goes wrong in a way that's hard to spot.
Real rotas aren't tidy. They have merged cells, several tabs, blank spacer rows, a separate allocations sheet that overrides the main one, week blocks stacked down the page, and a legend hidden three tabs away. Pasting into a chat window flattens all of that. The structure that told you which date a cell belonged to is exactly what gets lost on the way in.
A confident wrong answer looks like a right one. Chat assistants are built to produce plausible text, so when a grid is ambiguous they tend to fill the gap rather than stop and ask. You rarely get "I couldn't work out row 12". You get a complete, neat, confident list of shifts, and the invented ones look exactly like the real ones. Mistakes here aren't typos you'd notice. They're a night shift on the wrong Tuesday.
Checking it costs what doing it costs. So the only safe way to use the output is to check every row back against the spreadsheet. Do that and you've done the work by hand anyway, just in a different order.
And it's still a one-time copy. A chat doesn't hold a live connection to your rota. It can't look again next Tuesday when somebody swaps a weekend, and it won't tell you it's gone out of date. Whatever produced it, a file you import once has the same expiry date as the manual method above.
One more thing worth a moment's thought
That spreadsheet has your colleagues' names on it, and their shift patterns, which say a fair amount about where they are on any given night. It isn't only your data, and uploading it somewhere is a decision you're making on their behalf as well as your own. That's the reason we don't keep rota documents at all, and why your rota is never sent to an AI model.
None of which is a knock on those tools. They're useful for plenty of things. A department rota that changes every week just isn't one of them.
What happens the first time your rota changes
Nothing tells you. That's the whole problem, really.
What you've made is a copy, with no connection back to the spreadsheet it came from. So when somebody swaps a shift with you, or your leave gets approved, or a gap gets filled at short notice, or the coordinator reissues the rota with the weekends shuffled, the file changes and your calendar doesn't. It carries on cheerfully showing you shifts that aren't yours any more.
You find out the hard way. You turn up for a shift someone else is covering, or you miss one, or you book something on a night you're now working. And the fix is all eight steps again, from the top, every time the rota moves.
One-time converters have the same limitation. Anything that turns a spreadsheet into a file you then import is taking a snapshot. The snapshot is the problem, not the tool.
The version that keeps itself up to date
The way round it is not to copy anything. Instead of a file you import once, you add a calendar link: a web address your calendar app keeps checking on its own. When the rota changes, the link serves the new shifts, and your calendar picks them up without you doing a thing.
That's what RotaSync gives you. Three things, once:
- 1Point it at your rota. Paste the link to your department's Google Sheet or Office 365 workbook and it reads it live. No link to paste? Upload the Excel or CSV file instead, or email it in to a private address that's yours alone.
- 2Pick your name. It finds you among your colleagues and works out where the dates, names and shift codes sit, whatever shape your sheet is in. Where it genuinely can't tell, it asks you, and tells you why it's asking.
- 3Add the calendar link once. Apple, Google, Outlook, anything else. After that, swaps and leave and rewritten rotas just turn up.
How fast is "just turn up"?
That depends on your calendar app rather than on us. We serve the latest shifts whenever your app asks; your app decides how often it asks. Apple Calendar lets you pick the interval when you add it. Outlook usually checks every few hours. Google Calendar checks on its own schedule and can be slow, which is why we also offer to push shifts straight into it. Uploaded files are the exception: those are snapshots, so they change when you send a new file.
We don't keep your rota
A linked rota is read fresh each time your calendar asks. Files pass through a short-lived processing cache for up to 30 minutes while you finish setting up, and are then deleted. What we keep is your own list of shifts, so your calendar still works if the rota goes briefly unreachable. The privacy policy has the detail.
What we can't read
Worth saying plainly, so you don't waste an evening trying. None of these are fixable at our end.
- A PDF, a photo or a screenshot. We need the spreadsheet. If your department circulates a PDF, ask your coordinator for the file it came from.
- A rota marked only with cell colours. We read text, not formatting. If a shift is a shade of orange and nothing else, there's nothing there to read.
- A rolling template with no real dates. Generic week numbers with no calendar dates on them can't be pinned to an actual week.
- A sheet with downloading and copying switched off. That setting applies to you as much as to us, so no tool can get at it automatically.
And one caveat that applies to everything else. Your rota was written by a person, for people, so we're reading a document that was never designed to be read by software. We can get things wrong. Your official rota is always the source of truth, which is why we show you what we found and let you correct it before anything reaches your calendar.
Common questions
Why won't my rota just import into my calendar?
Because a rota is a grid and a calendar import wants a list. Dates run along one edge, names along the other, so your shifts are scattered across a row rather than sitting one per line. An import expects one row per event with its own subject, date and times. Reshaping the grid into that list is the actual work, which is why copying and pasting gets you nowhere.
Which file types can a calendar app import?
Google Calendar and Outlook both take a CSV, which is what you get when you save a spreadsheet as comma separated values. Apple Calendar doesn't accept CSV at all and will only take an .ics file, so on an iPhone or Mac the manual route needs another conversion step before it'll finish.
My dates imported on the wrong days. What went wrong?
Almost always the date format. Calendar imports generally read dates month first, so 06/07/2026 is taken as 6 July rather than 7 June. A UK formatted spreadsheet writes it the other way round, so every date needs rewriting before you import. This is the most common reason a manual import quietly lands a month of shifts on the wrong days.
Should I import my shifts into my main calendar?
No, put them in a new empty calendar instead. An import can't be undone in one action, so if the shifts land in your main calendar and something's wrong, you're deleting them one at a time. Keep them separate and you can bin the whole calendar and start again.
Can I convert a rota that's a PDF or a photo?
Not with RotaSync, and not reliably with anything else. A photo or screenshot of a rota can't be read, and neither can a PDF. You need the spreadsheet itself. If your department only circulates a PDF, ask your rota coordinator for the file it was made from: there almost always is one.
Do it once, not every month
Point RotaSync at the rota you already have, and your shifts turn up in your own calendar and stay right. Free for 30 days, no card needed.