Methodology
The point of this site is a single honest answer to “what does AI work actually pay?”. The rules below are strict, and they apply to every number on every page.
Maintained by Alex, independently. Data checked every few hours, corrections to contact@aipaylist.com. Who runs this →
Who stays listed, and what makes us remove someone
No directory can promise every contributor gets paid on time. We check advertised rates against each platform's public source and keep worker-reported pay out of medians and sorts. Missing rates stay labeled as missing, and platforms without readable feeds can still have profiles. We remove listings when the documented evidence meets the rules below.
- The advertised rate is not what workers describe getting. When the gap is large and documented, with sources on the platform page here, listings come down rather than sit next to honest ones.
- Payment trust is the problem, not just the headline rate. Repeated first-hand reports of missing earnings, long reconciliations, or accounts closed without explanation are delist signals when they are strong enough to cite.
- The listing is outside this directory's scope. Listings that disappear from a successfully read source are closed. Priced roles below the pay floor stay off the board. A missing rate is labeled as missing, not treated as zero.
A removed platform keeps its profile page with the decision, the evidence and the date. Not being listed here is not an accusation of fraud, and each page says what is true in the platform's favour too.
See which platforms we track, or read dated delist write-ups for Mindrift, CrowdGen by Appen, and Welo Data.
Where jobs come from
Every listing is read from a platform's own public job feed or careers board (the same data their own sites render), on a schedule of every few hours. Every job links to its original posting, and applications always happen there. We are a directory, never a middleman. We never invent listings.
Each job page reproduces the description the platform posted, attributed to them and linked back to the original, so you can judge a role before clicking. Above it we list what the role asks for: commitment, experience, credentials, languages and skills, all read from the posting's own words. Open “show the exact sentences” under those tags and you get the sentence each one came from. Nothing there is inferred. A requirement the posting does not state is not shown, and where the posting calls something preferred rather than required, the tag says so. When a role closes, its description comes down with it.
The “Must have” line
Many roles on the home page carry one short sentence under the label Must have: the requirement that most decides who can apply, as a language model reads the posting. Sometimes a second sentence names an extra the posting calls a plus, or gives a note such as “No AI experience needed.” The model writes it from the platform's own posting and from nothing else, and it is checked against that posting before it is stored. The model has to quote the sentence or bullet it relied on, and the quote has to be in the posting word for word. Every number and every content word of the line has to be the posting's own, a time limit the quote states (such as “within the past 7 years”) has to stay in the line, and “is a plus” is allowed only where the posting itself marks the thing optional. A line that fails any of those checks is not shown, because no line is better than a wrong line. Roles with no line simply show their other details.
The line is a pointer, not the posting. It can leave out a condition the posting states elsewhere, so the posting on the job page stays the source of truth and is what to read before applying. No rate is ever read from a line, and the lines take no part in ranking, sorting or alerts. They do help decide one list: the roles that need no experience. That list reads each role's line together with its posting, to see whether the role asks for a degree, a licence, years of work or a professional background, so the counts and pay figures on that list depend on the lines too. Its “English is enough” chip leaves out a role whose title or line names another language. It also leaves out a role open only in countries where English is not a working language, unless its line asks for English. One role is on that list by our own call, and its line reads “Preferred” instead of “Must have” because its posting lists its qualifications only as preferred. About ten roles from one family of AI safety roles are kept off it by our own call. Before the lines went live, the lines for the best paid roles were also read against their full postings. A line corrected by hand is kept until the platform changes its posting. If a line looks wrong, write to contact@aipaylist.com and we will fix it.
How pay is shown
Every rate is read from the platform's own feed and shown as the top of its advertised band. A “$30–55/hr” posting shows as up to $55/hr, an “up to $90/hr” posting shows as up to $90/hr, and a flat “$40/hr” posting shows as $40/hr. The top is the number that matters: it is the most the role says it can pay, and where a platform lets you set your own rate, it tells you how high you can bid. The full band as the platform wrote it stays visible on each job page under “source wording”.
- Per-task / per-project: never silently converted into an hourly rate. A $350 task is shown as a $350 task.
- Not published: the platform shows no rate. We say so instead of guessing, and where enough workers have described what that platform actually pays, the job page shows that separately (see below).
The $10 floor
A role that states its pay has to advertise at least $10 an hour, or $10 per task, to be listed here. Rates in other currencies are converted before that comparison. Roles that publish no rate are still listed, because a missing number is not a low one: those carry a reported figure instead, described below. Two different things were failing the floor, and both are worth naming.
Some feeds publish a placeholder instead of a rate. Appen's CrowdGen listings were arriving with a literal one cent attached, on postings whose descriptions mention no money at all, and their own public API returns no pay range for any open project. A cent is not an offer, and showing it as one would be a lie in the other direction.
The rest is real, honestly published pay of $3 to $9 an hour, almost all of it restricted to countries where that is the going local rate for rating work. Those roles exist and the platforms are not hiding them. They are not listed here because this site is about work that pays well enough to be worth an evening, and a $4 row next to a $400 one teaches you to trust neither. If you want that end of the market, the platforms' own boards carry it.
Salaried roles
Since 20 September 2026 a role that advertises an annual salary is not listed. This site is about contract work done beside a day job, and a full-time salaried position is a different thing. It was also the only kind of listing whose headline pay was an estimate rather than a copied figure, because an annual salary has to be divided into an hourly one before it can be read next to the rest of the list. Eight roles left on the day the rule started, five on micro1 and three on Mercor. A rate published per month is still listed: that is contract pay quoted by the month, not a salary.
Since 22 September 2026 the posting's own words count as well as the platform's pay field. A role whose posting states an annual salary is not listed, whatever else its feed carries. We found the gap in our own reading: micro1's data for a salaried role holds an hourly field beside the yearly one, we read the hourly one, and 18 salaried micro1 roles were listed by the hour at figures nobody was offered. One stood at up to $300 an hour on a posting that says base salary of $130,000 to $160,000. The yearly field is read first now. The word full-time alone removes nothing: a role paid by the hour at full-time hours is priced honestly and stays.
Roles that take no applications
Since 29 September 2026 a role whose own posting says it takes no applications is not listed. Some platforms post roles they fill themselves, such as a private shortlist whose members the project team adds directly, and an Apply button there leads nowhere. A posting that only limits who may apply, for example one closed to applicants from one country, or that says applications open later, is still listed.
Platforms we stop listing
Some platforms are removed from this directory entirely. The bar is evidence, not taste: either the gap between what a platform advertises and what its own workers report earning is large and documented, or the work it lists pays below what this site is for. A platform that simply pays modestly and says so honestly is not removed for that.
A removed platform keeps its profile page here, stating the decision, the reasons, the evidence and the date. Taking the listings down and then going quiet would be the same opacity this site exists to argue against, and you may still want to apply directly. Each of those pages also states what is true in the platform's favour, because not being listed here is not an accusation of fraud: most of these companies do pay. If a platform starts publishing rates its contributors recognise, its listings come back. See which platforms are affected.
Reported pay, and why it is kept separate
Some platforms publish no rate at all, and some publish one that workers say they never see. Where public worker reports are solid enough to be worth something, the platform page carries a reported figure: what people say they actually end up with once unpaid onboarding, failed quality checks and empty task queues are counted. Every one of those figures shows its sources, the date it was gathered and how strong the evidence is.
It is deliberately walled off. Reported pay never enters a median, a percentile, a sort order, a filter or an alert. Those read published rates only, because a number from a job feed can be checked and a number from a forum cannot. The two are shown side by side rather than blended, and where they disagree, that gap is the most useful thing on the page.
Benchmarks: distinct advertised rates, top of band
All benchmark figures (homepage, pay index, platform rankings) are computed on distinct advertised rates: one observation per unique platform + rate combination. A platform re-posting one pay band across 300 country variants contributes one vote, not 300, so no single boilerplate string can dominate a percentile. Each observation is the top of its band (a “$6–$65/hr” posting counts as $65). We report the 25th–75th percentile plus the median, always publish the distinct-rate count next to a listing or role count (pay.json carries both), and never show a benchmark with fewer than 5 distinct rates behind it. Per-task pay is never included in any benchmark.
One thing to hold in mind when quoting these figures: since 2026-08-26 the population they are computed over is truncated at the $10 floor above. They describe the pay of roles this directory lists, which is not the same as the pay of all AI work in the world.
Basis note: before 2026-08-25 benchmarks used the midpoint of each band and excluded “up to” rates. They now use the top of every band, so figures from before that date are not directly comparable.
How a role compares
Every open job page carries a block called “How this role compares”. It is built from our own daily reads of every platform we follow, never from the platform's posting, so it tells you what the posting cannot.
- Pay across the field. Every other open role in the same field with a stated hourly rate in US dollars, on every platform we follow, counted the way the benchmarks above are: one vote per distinct advertised rate per platform, at the top of its band. The role's own country copies never count against it. A role paid in another currency is shown the field's figures but is not placed among them. The block appears only with at least 5 distinct rates behind it, and a platform's own median only with 5 of its own. The table lists the five platforms with the most roles and says so when there are more. The catch-all “other” field is too mixed to compare within, so it gets no pay comparison.
- The listing's history. When we first saw it, and the last day its platform still listed it. A change to the listed pay is shown the way the top of the page shows pay, at the top of the band and in the role's own currency. It is shown only when our record holds the rate it replaced and both sides are in the same unit, so an hourly rate is never set against a per-task fee. A change logged on 21 or 25 August 2026 is left out too. On those two days we changed how we read and count rates, so a change logged then may be ours and not the platform's. A change left out for any of these reasons, or older than the four newest shown, is still counted, and the page says how many it does not show. “The listed pay has not changed” appears only when our record reaches back to the day we first saw the role, holds no change at all, and shows the role at its current pay throughout. A pay change can also be a correction to how we read a feed, and the page says so next to it.
- Earlier listings. How many times before we saw the platform list the same title. Only listings that had left our list before this one appeared count, copies of one posting count once, and postings open at the same time count as one time. The block never reports a role as taken down and relisted: our own reads have closed live roles by mistake, so a gap in them is no proof that the platform removed a role.
- Language roles. How many other open roles with a stated hourly rate in US dollars name the same language, on which platforms, and what they pay at the top of their bands.
Freshness
Every job carries a “seen live” timestamp: the last time it appeared in its platform's feed. Jobs that disappear from their source are automatically closed and drop out of the directory instead of rotting in it.
Platforms change rates after posting. We learned this the direct way: on 5 September 2026 a micro1 post with a thousand openings went from $20–$70 to $50–$90 six hours after we had read it, and a sweep of every open micro1 role found eight more that had been edited in place, five of them downward. So a rate is never read once and trusted. Every listing is re-read at least once a day, most of them on every run, and when the platform's figure has moved, ours moves with it and the change is recorded. If the number you see on the platform differs from the one here, it is almost always a change made since the last read, and it will be corrected within the day. It is never a number we made up: the exact wording we read it from is on every job page under “source wording”.
Duplicates
Listings are fingerprinted per platform and posting, so a re-post updates the existing record rather than creating a copy. Some platforms legitimately post one role per country. Those stay separate, because eligibility and apply links genuinely differ.
One platform needed more than that. Alignerr advertises the same job many times over: on 2026-08-26 its board carried 5,530 listings but only 469 separate jobs. Some are copied once per city, with the city name dropped into a single sentence of an otherwise identical posting, while every listing still says Remote. Others are repeated with no location at all, word for word or lightly reworded. Listing all of them would bury the site in one job, so copies that share a title and a rate are shown once, and the job page says how many times the platform posted it. A real difference in pay always splits them back apart.
Platforms without feeds
Platforms without a readable public opportunity list get profile pages explaining how to join. Outlier and Alignerr now have public feeds. DataAnnotation publishes ongoing recruitment tracks; we label those separately and exclude them from job-posting search markup. Public rates are advertised terms, not proof of available tasks or earnings.
Money
Some outbound links are referral links, and they never affect ranking, sorting or inclusion. Referral links carry rel="sponsored" markup and are listed platform by platform on the disclosure page.