Stop wrestling with rosters. Drag them in, and let the costs add themselves up.
The xGrapher shift schedule maker is a free roster editor with no sign-up. Sweep the mouse across a month to fill it in, and labor costs and staffing gaps are calculated as you go. The finished schedule prints straight onto A4/A3.
| Date | Hana Sato | Ichiro Suzuki | Misaki Tanaka | Kenta Takahashi | Sakura Ito | Ryo Watanabe (manager) | Notes |
|---|---|---|---|---|---|---|---|
| 7/1Wed | D9-18 | D9-18 | M11-20 | ON22-7⁺ | OFF | OFF | |
| 7/2Thu | E7-16 | D9-18 | L13-22 | L13-22 | M11-20 | D9-18 | |
| 7/3Fri | E7-16 | OFF | M11-20 | OFF | L13-22 | D9-18 | |
| 7/4Sat | E7-16 | D9-18 | M11-20 | ON22-7⁺ | L13-22 | D9-18 | Kitchen −1 |
| 7/5Sun | OFF | D9-18 | M11-20 | L13-22 | L13-22 | OFF | Front of house −1 |
| 7/6Mon | E7-16 | D9-18 | OFF | L13-22 | OFF | D9-18 | Front of house −1 |
| 7/7Tue | E7-16 | OFF | M11-20 | OFF | L13-22 | D9-18 | |
| 7/8Wed | D9-18 | D9-18 | M11-20 | ON22-7⁺ | OFF | OFF | |
| 7/9Thu | E7-16 | D9-18 | L13-22 | L13-22 | M11-20 | D9-18 | |
| 7/10Fri | E7-16 | OFF | M11-20 | OFF | L13-22 | D9-18 | |
| Total | 72h | 56h | 72h | 56h | 56h | 56h |
Where spreadsheet rosters tend to break down
Overnight hours refuse to add up
A shift from 22:00 to 07:00 goes negative if you simply subtract. Add break deductions and a night premium and the formulas grow into something nobody dares to touch.
Costs only appear once you are finished
If the totals arrive after the roster is built, going back over budget means reworking the whole thing. You need to see what each extra hour costs while you are still placing it.
Printing pushes columns onto the next page
It looks fine on screen, then prints with columns spilling over and text cut off. The more staff you have, the more time goes into making it fit the paper.
What you can do with it
Built around the things rosters actually need day to day. All of it is free, and no account is required.
Fill shifts in by dragging
Pick a shift type and sweep across the cells. Drag downwards to repeat a run of days, or drag to another person to hand the shift over.
Day, week and month views
The month view is the familiar roster grid with dates down the side and staff across the top. The day and week views put hours on the horizontal axis so overlaps and thin patches are obvious.
Ten shift-type presets
Day, early, mid, late, night, overnight, evening, post-night, sleepover and on-call are ready to use, and the names, hours and colours are all editable to match what your team calls them.
Labor costs, calculated for you
Break deductions, the night premium between 22:00 and 05:00, overtime beyond 8 hours a day or 40 a week, statutory holiday pay and commuting allowance are all totalled. Rates and standard hours are configurable.
Staffing shortfall checks
Record how many people a position needs during a time range, by weekday or for one date, and any gap is highlighted in red. Add someone and the warning clears immediately.
Duplicate into next month
One sheet covers one month. Duplicating lets you match the dates, match the weekdays, or start from an empty period, so next month takes seconds to set up.
Browser storage and JSON transfer
Everything is saved in your browser and restored next time. Nothing is sent to a server. To move a schedule to another device, export and import a JSON file.
Print layout that fits A4/A3
Printing from the browser hides the page header and toolbars and places just the schedule on the paper. Paper size and orientation are chosen to suit the view and staff count, and can be overridden.
Per-person settings
Hourly or salaried pay, positions, available hours by weekday, commuting allowance, staff number and a personal colour. Shifts placed outside someone's available hours are flagged.
Collect shift requests
Send staff a link and they fill in their days off and available hours on a dedicated page. Load the JSON they return and the requests land on your schedule.
Reading the screens
Month view: the familiar roster grid
Dates run down the side and staff across the top. Weekends and statutory holidays are coloured, and the staffing column on the right shows any position that is short in red. The row at the bottom totals actual hours worked per person for the month. Click a cell to adjust its hours or break on the spot.
| Date | Hana Sato | Ichiro Suzuki | Misaki Tanaka | Kenta Takahashi | Sakura Ito | Ryo Watanabe (manager) | Notes |
|---|---|---|---|---|---|---|---|
| 7/1Wed | D9-18 | D9-18 | M11-20 | ON22-7⁺ | OFF | OFF | |
| 7/2Thu | E7-16 | D9-18 | L13-22 | L13-22 | M11-20 | D9-18 | |
| 7/3Fri | E7-16 | OFF | M11-20 | OFF | L13-22 | D9-18 | |
| 7/4Sat | E7-16 | D9-18 | M11-20 | ON22-7⁺ | L13-22 | D9-18 | Kitchen −1 |
| 7/5Sun | OFF | D9-18 | M11-20 | L13-22 | L13-22 | OFF | Front of house −1 |
| 7/6Mon | E7-16 | D9-18 | OFF | L13-22 | OFF | D9-18 | Front of house −1 |
| 7/7Tue | E7-16 | OFF | M11-20 | OFF | L13-22 | D9-18 | |
| 7/8Wed | D9-18 | D9-18 | M11-20 | ON22-7⁺ | OFF | OFF | |
| Total | 56h | 48h | 56h | 48h | 40h | 40h |
Day and week views: shifts on a timeline
In the day view each row is a person; in the week view each row is a date, with the people working that day listed inside it. The horizontal axis is the clock in both. Overnight shifts are not cut off at midnight — the bar keeps going into 25:00, 26:00 and so on, so handovers into the morning stay readable. The shaded band is night hours (22:00 to 05:00), and the strip under each date shows staffing per time slot, with red marking the hours you are short.
Collect availability without leaving the tool
Stop gathering “I can’t work that day” on paper or chat and retyping it. Hand out a link to the employee-facing Shift Request Form and load the file that comes back.
Send the links
Copy a per-employee link from “Request shift preferences” and send it by email or chat. The month, their name, your shift types and the visible hours all travel in the link, so they can start writing the moment they open it.
They fill it in
The Shift Request Form is a gantt chart. Dragging across a date row marks that time as requested off; the “All day” button takes the whole day. They can also record their weekly availability and duplicate last month’s request. No sign-up needed.
Import and apply
Load the JSON they send back from “Import shift requests” and pick whose it is. Their requests appear greyed out on the schedule, so you cannot place a shift there by mistake, and their weekly availability can come along too.
What the employee sees. Hatching is a request off; light grey is time their weekly availability already rules out.
Three steps to get going
Add your staff and shift types
Enter names, pay rates and positions. Sample data is loaded from the start, so editing it is enough to begin.
Drag the shifts in
Pick a shift type and sweep across the cells. Costs and staffing gaps update as you type.
Print, export or share
Print it for the noticeboard, export an image for chat, or hand it over as JSON. Pick whatever suits.
Who it suits
Free today, and what may come next
Free (available now)
- ✓Drag-based rostering across three views
- ✓Fully editable shift types (ten presets)
- ✓Labor costs with break, night, overtime and holiday premiums
- ✓Staffing shortfall checks against your requirements
- ✓Automatic browser storage and JSON transfer
- ✓A4/A3-ready printing and image export
- ✓Collecting shift requests from staff (share a link, import the JSON)
Features under consideration
These are planned for the future and are not available yet.
- ・Cloud sync and simultaneous editing by several people
- ・Employee accounts with cloud submission (no file to pass around)
- ・CSV export for payroll software
- ・AI-generated draft rosters that respect requests and budget
- ・Email and messaging notifications when a roster is published
Try it with the sample data
A sample roster is loaded from the start, so you can see how it handles within seconds. No sign-up, nothing to install.