Skip to content
ignitai
← Back to blog · · 9 min read

Convert timesheet PDF to Excel on Mac (2026 payroll guide)

Turn timesheet PDFs into one Excel hours sheet on Mac — read on-device, never uploaded — employee, date, job code, regular and overtime hours in columns.

guides payroll mac timesheets

ignitai turns PDFs — even scans and photos — into clean Excel workbooks on your Mac — your first conversion is free, then $19.99/mo after a 3-day free trial.

Download on the App Store ignitai — free download

Friday afternoon, and the week’s timesheets are in: five PDF exports from the clock app the office staff actually uses, six scanned paper cards from the field crew, one photographed against a truck dashboard, and a subcontractor’s own Word-template-printed-to-PDF that lists his crew’s hours his way. Payroll runs Monday. Every sheet holds the same data — who worked, on what day, on which job, for how many regular and overtime hours — and every sheet prints it differently. So whoever runs payroll does what they do every week: opens each PDF on one side of the screen and Excel on the other, and retypes hours cell by cell, hoping no 7 becomes a 1 between the scan and the paycheck.

Everyone who pays people by the hour lives some version of this. The contractor whose crews turn in paper cards from three job sites. The cleaning company whose supervisors text photos of the weekly sheet. The bookkeeper who invoices clients from consultant timesheets and needs the hours as rows before she can bill them. The staffing agency verifying a contractor’s hours against what the client approved. A timesheet is a form built for a clipboard and a signature — and the hours on it die in a folder unless someone retypes them.

This guide is the Mac workflow: convert timesheet PDFs to Excel on Mac — read on-device, never uploaded — with employee, date, job code, and regular and overtime hours in their own columns, one row per employee per day, ready for the payroll run.

Why timesheets defeat table extractors

A timesheet looks like a table, which is exactly why grid-based tools fail on it in ways that are hard to spot:

  1. Every timesheet is a different grid. A weekly grid with days as columns. A punch sheet with in/out pairs stacked four deep per day. A daily log with job codes down the side. The clock app’s export, the subcontractor’s template, the paper card from the hardware store — same data, incompatible layouts. A template-based extractor needs a mapping per layout; one payroll week sees them all.
  2. The rows that matter are mixed with rows that don’t. Totals rows after each employee, a lunch-deduction line, a signature band, an approval box. A grid extractor faithfully hands you all of it, and the totals rows silently double your hours when you sum the column — the kind of error that becomes a real paycheck.
  3. The copies that matter are paper. Field crews don’t export PDFs; they fill in cards with a pen. What reaches the office is a scan, a fax from the site trailer, or a phone photo shot at an angle. A layout parser gets nothing from these — they need to be read, not parsed for a text layer.
  4. Hours are split, not summed, in the source. Regular in one cell, overtime in another, sometimes double-time in a third, sometimes only in/out punches with no computed hours at all. Getting regular_hours and overtime_hours into separate columns — consistently, across layouts — is a reading-comprehension task, not a grid-detection task.

The fix requires understanding the document — knowing that the number in the box next to “OT” belongs in the overtime column no matter where that box printed. That’s what a prompt-driven extractor does that a grid tool can’t.

Method 1: ignitai on Mac (the read-on-device way)

ignitai extracts by description, not by layout template, so one prompt covers the clock-app export and the dashboard photo alike:

  1. Drag the PDFs in — or use the file picker, or right-click → Open With from Finder. Scanned and faxed cards work the same way as born-digital exports; the scanned-PDF walkthrough covers the scan-quality details.

  2. Describe the output shape in plain English. A prompt is required — the Convert button stays disabled without one. Start from the Forms starter template or write your own, one clause per failure mode above:

    “One row per employee per day: employee, week_ending, date, job_or_project_code, regular_hours, overtime_hours, total_hours. Take hours from the daily cells, not the totals row — skip totals, lunch-deduction lines, and the signature and approval boxes. If a cell is blank, leave it empty. ISO dates, bare numbers.”

    Save it as a preset — it syncs to your other devices via iCloud — and next Friday’s stack is one click.

  3. Pick Excel, hit Convert. Each timesheet is read on your Mac — never uploaded — and only the recognized text goes to ignitai’s private hosted pipeline to build the sheet. On macOS 26, Apple’s native on-device table recognition makes dense weekly grids extract noticeably sharper; the same flow works back to macOS 14.4. A typical week’s batch is usually ready in under a minute.

  4. Open the result in Excel or Numbers. One worksheet, one row per employee per day, every cell clean text — ISO dates, bare hour counts — so one formatting pass types the columns and the SUMs work. The in-app preview is read-only (rename only); edits happen in the spreadsheet.

A payroll week is one batch. Select all twelve files in Finder and drag them in together with the same prompt — they consolidate into one worksheet, which is the hours sheet. The employee column does the work of keeping people apart: filenames never leave your Mac, so there’s no filename column, and identity has to come from the document itself — and a timesheet without a name on it is a problem worth catching anyway. If some of the week’s sheets arrived as photos rather than PDFs, they run as their own batch: a drop mixing PDFs and images imports only the PDFs.

One table per run — you pick the grain. “One row per employee per day” feeds payroll and job costing. Want punch-level detail instead — one row per in/out pair for a dispute over a specific Tuesday? That’s a second run with a second prompt, not extra sheets in the same workbook. Two shapes, two runs.

Method 2: Excel for Mac’s Get Data (no PDF connector)

Excel for Mac ships Power Query under Data → Get Data, but the Mac connector list — Text/CSV, XLSX, XML, JSON, SharePoint, SQL Server, OData — has no From PDF option; that connector is Excel-for-Windows-only. And even on Windows, a timesheet is Power Query’s bad case: From PDF detects visual grids, so the day-column layout comes back transposed from the shape payroll needs, totals rows arrive embedded in the data, and the signature band contributes noise rows. Against the scanned paper cards — the majority of most stacks — it returns nothing at all.

Method 3: Preview + Numbers (the one-sheet fallback)

For a single born-digital timesheet: open it in Preview, select the grid, paste into Numbers, and repair by hand — deleting totals rows, splitting merged cells, retyping what pasted as one line. Workable for one consultant’s monthly sheet; at a dozen sheets a week it’s slower than retyping, and against a paper card it’s nothing at all.

Method 4: web converters (the employee-data line)

Generic web PDF-to-Excel tools share Power Query’s grid blindness, and the free tiers gate multi-file batches. But the disqualifying issue is the content. A timesheet carries employee names, and depending on the template, employee IDs, pay rates, and site addresses — payroll data about real people. Sending that to a free converter you don’t control is a data-handling decision you’re making on your employees’ behalf. The on-device read exists for exactly this class of document: the PDF stays on your Mac, and only recognized text touches ignitai’s private pipeline.

On iPhone and iPad

Timesheets are born on the job site, not at the desk:

  • iPhone — the crew lead hands over the signed card at the end of the shift: capture it with the in-app camera scan before it rides home in a glovebox, apply the saved preset, and the hours are in a sheet before the truck leaves the yard. A Live Activity shows conversion progress from the lock screen. A card that arrives as a photo in a text goes in through the share sheet the same way.
  • iPad — the site-office iPad collects the week’s PDFs in Files: multi-select them from the picker or share sheet (there’s no external drag-and-drop into the app on iPad), convert with the synced preset, and iCloud puts the XLSX on the Mac where payroll runs.

One subscription covers iPhone, iPad, Mac, and Vision Pro, so the preset travels with you.

The payroll pass: what the hours sheet unlocks

The sheet isn’t the deliverable — the checks are:

  1. Run the payroll pivot. Rows = employee, values = sum of regular_hours and overtime_hours: the week’s payroll numbers in thirty seconds, from one sheet, with the totals computed by Excel instead of copied from a form. Cross-check the result against what actually got paid with the paystub-to-Excel flow — hours to stub to W-2, the whole chain reconciles.
  2. Audit the overtime. Filter total_hours by week and flag anyone over 40 whose overtime column is empty — the misclassification that becomes a wage claim is a filter away instead of buried in a folder of cards.
  3. Cost the jobs. A pivot on job_or_project_code × summed hours shows where the labor actually went — the number the estimate promised and the invoice needs. Pair it with the expense-report workflow and the job’s true cost, labor plus expenses, lives in one workbook.
  4. Back the client invoice. For agencies and consultancies billing by the hour, the sheet is the invoice backup: filter to the client’s project code, and the line-item detail attaches to the bill. If the client wants it in a shared sheet, the same XLSX imports straight into Google Sheets — the PDF-to-Google-Sheets Mac guide covers that handoff.

When not to use this

  • Your team already clocks in digitally. QuickBooks Time, Deputy, Clockify, and Homebase all export hours as CSV/Excel from the admin dashboard. If everyone’s on the app, use the export — extracting from PDFs when the system will hand you the data is a workflow built backwards. The PDF path is for paper cards, subcontractor sheets, and the crew that will never install a clock app.
  • You need punch-level audit trails with device timestamps. A photographed paper card proves what was written, not when. If compliance requires machine timestamps, that’s a time-clock-system decision, not an extraction one.

Bottom line

For timesheet PDFs that need to become payroll rows on a Mac: drag the week’s stack into ignitai, write the one-paragraph prompt (one row per employee per day, hours from the daily cells, skip the totals and signature rows), pick Excel, Convert, then run the payroll pivot and the overtime filter. Use Preview-and-paste for a single born-digital sheet; keep employee data away from web converters entirely. The bookkeeper’s Friday belongs on the exceptions — the missing card, the unexplained overtime — not the retyping.

Get ignitai on the App Store — sign in with Apple, first conversion free, then $19.99/mo after a 3-day trial; one subscription covers iPhone, iPad, Mac, and Vision Pro.

FAQ

How do I convert a timesheet PDF to Excel on a Mac?

Drag the timesheet PDFs into ignitai, describe the rows you want in one sentence — employee, date, job code, regular hours, overtime hours — and tell it to skip the totals row and the signature line. Pick Excel and hit Convert. The batch comes back as one sheet with one row per employee per day, ISO dates, and bare numbers ready to sum.

Does it work on handwritten or scanned paper time cards?

Yes — paper cards are the normal case, not the exception. The document is read on-device rather than parsed for a text layer, so a scanned or photographed card works the same way as a PDF exported from a clock app. Legible handwriting extracts well; the cleaner the scan, the sharper the result, and macOS 26’s native table recognition helps on dense weekly grids.

Can it put each employee on their own worksheet?

No — the output is always one table on one worksheet per run, with every cell as clean text. Keep employees apart with the employee column instead: one row per employee per day means a pivot or a filter separates them in seconds. If you genuinely need separate files, run each employee’s sheets as their own batch.