Free Job Application Tracker

Track every application, spot stale leads, and export your data any time. It works out your funnel, how long replies actually take, and which applications have gone quiet long enough to be worth a follow-up — all in your browser, with no account.

Read this before you rely on it. Your applications are saved in this browser on this device only. They are not synced, not backed up, and not sent anywhere. Clearing site data or cookies, using private/incognito browsing, switching browsers, or switching devices will lose everything. Export a copy regularly — the JSON and CSV buttons below are the whole backup story, and the file is yours to keep.
No sign-up, no email, no limit on how many applications you track, and nothing hidden behind an upgrade. Every calculation on this page runs in your browser.

Add an application

Saved
The role
Only http and https links are made clickable in the table.
Where it stands
Choosing Saved clears the applied date — a saved lead has not been sent yet.
Moves forward on its own. Set it by hand when you backfill a rejection that came after an interview.
Any first human response counts, a rejection included. If you move the status past Applied and this is blank, today's date is filled in for you — change it if the reply came earlier.
Next step, pay and notes
Free text. Sorting reads the first number in the field and treats a trailing k as thousands.

Your applications 0 rows

Every word must match. Searches company, title, notes, next action, salary, status and source.
days
A convention you can change, not a measured figure.
No applications yet.

Assumptions, stated plainly. This tool hardcodes no external reference data — no tax rates, no salary tables, no industry benchmarks. Every number on this page is computed from the rows you typed. The only built-in defaults are: a follow-up prompt at 14 days since the last contact on a row (a convention, adjustable above), a 12-week window for the weekly chart, a floor of 5 rows before any percentage is printed rather than a plain ratio, and the four funnel stages Applied → Phone screen → Onsite → Offer. We deliberately do not print a “typical” conversion rate for you to compare yourself against, because we have not measured one and the figures circulated online are almost never attributable. How every tool here works is written up on our methodology page.

Why tracking applications is worth the five minutes

A job search does not fall apart dramatically. It leaks. You send six applications in a good week, three go quiet, and a month later you cannot remember which recruiter promised to come back and which never wrote at all. The cost is specific: the follow-up you never sent, on a role still open. Any row that is still open drops into a follow-up queue once it has been quiet for longer than your threshold — 14 days by default, adjustable. Silence is measured from the last contact on that row: the reply date if you logged one, otherwise the date you applied. So a phone screen three weeks ago with nothing since shows up too, which is the row most worth chasing. Rejected and ghosted rows are left out; those are not silent, they are finished.

What the funnel counts, and the mistake nearly every tracker makes

A spreadsheet has one status column, and you overwrite it. When an onsite turns into a rejection the row reads “Rejected” and the onsite has vanished. Add up the season at the end and it looks like you never got past a phone screen.

This tracker stores two things per row: the current status, and the furthest stage that application ever reached. The funnel is built from the second. An onsite that ended in a rejection is counted in the applied row, the phone-screen row and the onsite row, because all three genuinely happened. Since “Rejected” hides how far you got, the furthest stage reached field stays editable — set it by hand when you backfill from memory.

The other half of the mistake is the denominator. A rate only means something against the stage before it. “A 5% offer rate” against every application you ever sent says almost nothing; “one offer from four onsites” says the interviews work and the resume is the bottleneck.

A denominator also has to be big enough to carry a percentage. Below five rows the funnel prints the ratio — “1 of 3 onsite” — instead of a rate, for the same reason the median panel refuses to sound confident about four data points. One application that reached an offer is not a 100% conversion rate; it is one application, and the next one moves that figure by fifty points.

A worked example

Suppose you have 42 rows. Four are saved leads you never sent, so 38 were applied to. Of those 38, nine reached a phone screen, four reached an onsite, one became an offer. The funnel reads: Applied 38; Phone screen 9, 23.7% of applied, displayed as 24%; Onsite 4, 44% of screens; Offer 1, 25% of onsites.

Now response times. You logged a first reply on 14 of the 38 — the nine that became screens plus five straight rejections. The gaps, in days: 2, 3, 3, 4, 5, 6, 6, 7, 9, 11, 12, 14, 19, 26. Fourteen values, so the median is the mean of the 7th and 8th, 6 and 7: 6.5 days. The arithmetic mean of the same list is 9.1, dragged upward by the single 26. That gap is why this tool reports a median — you are not describing the tail, you are asking at what point silence becomes meaningful, and half the replies were in by day 6.5.

The other 24 applied rows have no reply at all. They are excluded, and the panel says so, because 6.5 days describes how fast replies arrive when they arrive, not how likely one is.

Edge cases, and how they are handled

  • A reply date earlier than its applied date is kept, excluded from the median, and counted out loud rather than silently dropped.
  • A date in the future is flagged in the table instead of producing a negative age.
  • Day counts run on UTC midnight, so a 14-day-old application stays 14 days old across a daylight-saving change.
  • Blank cells sort to the bottom in both directions, never to the top.

When to follow up, and what to say

There is no universally correct interval, and anyone quoting one to the day is guessing. What is defensible: send one follow-up, once a normal review cycle has plausibly happened, and make it add information rather than ask for a status. Fourteen days is the default because it clears that cycle while the role is usually still open. At a ten-person company where a founder reads everything, seven is fine.

After an interview the clock is better. Ask when they expect to decide, put that date in Next action date, and follow up the day after it passes. That is a commitment they gave you, not a guess you made.

A follow-up worth sending

Hi Priya — I applied for the Operations Analyst role on 3 March and wanted to add one thing: last year I rebuilt the dispatch reporting at Northwind, close to the forecasting work in your posting. Happy to send a one-page summary. If the role is filled, no problem — I would just appreciate knowing.

It carries new information and gives them an easy way to close the loop. Do not send a second follow-up on the same silent application. One is diligence; three is remembered for the wrong reason.

Telling a stalled process from a dead one

The two look identical for about a fortnight. After that, the difference is whether anybody is still answering. Stalled but alive: someone replies at all, even to say there is no news; the posting is still up; the date they gave you slipped and a new one replaced it. Give those a next-action date and nothing more. Dead: two messages to someone who previously replied go unanswered; the posting is down or reposted with a fresh date; your contact has left. Mark it Ghosted and keep the row — deleting dead applications is the fastest way to make your own numbers flatter you.

What this tool does not do

  • It does not sync. Moving devices means exporting the JSON and importing it on the other one.
  • It does not remind you. No emails, no notifications — nothing here knows who you are.
  • It does not interpret salary. That field is free text so it can hold ranges, currencies and equity notes; the only thing done with it is reading the first number in order to sort.
  • It does not predict. No score, no chance-of-offer, no benchmark. It counts what you told it.

If the funnel says your interviews convert but your applications do not, the fix is upstream: the resume and job description matcher. If it says the opposite, the fix is rehearsing your answers. And when a row becomes an offer, compare it properly.

Job application tracker FAQ

Where is my data stored, and can I lose it?
It is stored in your browser’s local storage, on the device you are using, and nowhere else. Nothing is uploaded. That also means you can lose it: clearing site data or cookies, browsing in a private window, uninstalling the browser, or switching devices will all take it with them. Export the JSON file regularly — that file is the only backup that exists. If the tracker ever opens and finds a saved copy it cannot read, it says so on the page instead of showing you an empty tracker: the stored text is copied aside under a dated recovery key and nothing is saved over it until you say to go ahead.
Can I sync between my phone and my laptop?
Not automatically, because there is no account and no server to sync through. The manual route works fine: export JSON on one device, open the tracker on the other, and import it. Importing merges by row id and never deletes a row, so the same file can be imported repeatedly without creating duplicates. For a row that exists on both sides, the file only overwrites the local copy when its version was edited more recently; where neither side is provably newer — the same edit time, or a file exported before this rule existed — the copy already on the device is kept. The message after an import counts all three: added, updated, kept.
Why does an application I marked Rejected still count in the onsite row of the funnel?
Because the onsite happened. Each row stores the furthest stage it ever reached alongside its current status, and the funnel is built from the first of those. If it counted only the current status, every rejection would erase the interview that came before it, and your funnel would understate how far you are actually getting. You can correct the furthest stage by hand on any row.
Why median days to first reply instead of an average?
One employer that answers after two months drags an average far above anything useful, while the median barely moves. The question you are really asking is at what point silence becomes meaningful, and the median answers that. The tool also tells you how many applications were excluded because no reply was ever logged, since those are exactly the rows an average would quietly hide.
Is there a limit on how many applications I can track?
No. There is no row cap, no pagination, no trial, and no paid tier. The only real limit is your browser’s storage quota, which runs to several megabytes — thousands of rows. If a save ever fails, the tool checks and tells you immediately rather than pretending it worked.
Can I import a spreadsheet or a CSV file?
Export works in both JSON and CSV; import only accepts the JSON file this tool produces. CSV is ambiguous to read back — there is no reliable way to know which column is which, or how a given spreadsheet encoded a date — and silently misreading your history would be worse than not offering it. Use CSV for spreadsheets and reporting, JSON for backup and for moving between devices. One thing you may notice in the CSV: any cell of yours that begins with =, +, - or @ is written with a leading apostrophe. Spreadsheets treat those characters as the start of a formula and would run the cell rather than show it, which matters most when the rows came from someone else’s exported file. The apostrophe is the standard "this is text" marker and Excel, Sheets and LibreOffice consume it as the file opens.
Will it remind me to follow up?
Only when you open the page. There are no emails, no push notifications and no calendar integration, because none of those are possible without an account and a server. The follow-up queue and the overdue list are recalculated the moment the page loads, so the habit that makes this work is opening it once a week.
Can it tell me my chances of getting an offer?
No, and be wary of anything that claims to. It reports counts and rates from the rows you entered. Your own funnel across 40 or 50 applications is genuinely informative about where you are getting stuck; it is not a probability, and no tool on the internet has the data to turn it into one.

Track it, then improve what the numbers point at

Every tool here is free, runs in your browser, and never asks for an account.