Loading...


Updated 4 Aug 2026 • 4 mins read

AWS Athena pricing is usage-based: $5 per terabyte of data scanned on demand, or per DPU-hour with provisioned capacity. Because you pay for data read, cost is really a data-layout problem. This guide explains Athena pricing in 2026, the hidden fees, and how partitioning and columnar formats cut bills.
The same Athena query can cost fifty dollars or fifty cents, and nothing about the SQL changes. What changes is the data underneath it. Athena charges for the bytes it reads from S3, not the rows it returns, so a SELECT that touches ten columns of a wide, uncompressed CSV can scan a hundred times more than the same query over partitioned Parquet. That single fact explains almost every Athena bill, good or bad.
This guide covers AWS Athena pricing in 2026, on-demand and provisioned, the costs that hide outside the Athena line item, and the handful of layout changes that routinely cut a bill by 85 to 99 percent.
Key takeways Athena's default pricing is $5.00 per terabyte of data scanned, rounded up to the nearest 10 MB with a 10 MB minimum per query. DDL statements and failed queries that scan no data are free. Alternatively, provisioned capacity bills about $0.30 per DPU-hour for reserved compute, which wins at consistently high volume. The single biggest cost lever is scanning less data, through partitioning, columnar formats, and compression.
Athena is serverless, so there is no cluster to size and no idle cost between queries. You pay for query execution, and there are two models. On-demand charges $5.00 per terabyte of data scanned by your SQL, billed to the nearest megabyte with a 10 MB minimum per query, which means even a tiny query costs a fraction of a cent, never nothing. Crucially, DDL statements like CREATE TABLE and ALTER TABLE are free, and failed queries that scan no data are not charged, though cancelled queries are billed for whatever they scanned before you stopped them.
The second model, provisioned capacity, reserves compute measured in Data Processing Units. You pay about $0.30 per DPU-hour for capacity you hold, and queries running on it pay no per-terabyte charge. One DPU is roughly 4 vCPUs and 16 GB of RAM, and as of early 2026 reservations support a 4-DPU minimum and 1-minute billing, which makes them practical for far shorter workloads than before. Provisioned capacity typically wins once a team consistently scans more than about 100 terabytes a month, or needs guaranteed concurrency.
The Athena charge in Cost Explorer is rarely the whole story. Several supporting costs are billed under other services and catch teams off guard:
The classic trap is moving log analytics to S3 plus Athena to save money, then storing the data as unpartitioned CSV in millions of tiny files. The Athena line item looks fine; the S3 request charges do not.
Because you pay for data scanned, every optimization is really about reading fewer bytes. Applied together, these routinely cut Athena costs by 85 to 99 percent.
| Technique | What it does | Typical scan reduction |
|---|---|---|
| Columnar formats (Parquet / ORC) | Reads only referenced columns and compresses data efficiently | 85–99% |
| Partitioning | Scans only relevant partitions (for example, by date) | Large, query-dependent |
| Compression (Snappy / Gzip) | Reduces the number of bytes read per file | Meaningful; stacks with columnar formats |
Column pruning (avoid SELECT *) |
Reads only the columns required by the query | Proportional to the number of columns omitted |
| Compact small files | Reduces per-file overhead caused by many tiny objects | Improves overall scan efficiency |
| Workgroup scan limits | Caps the amount of data a query can scan to prevent runaway queries | Prevents worst-case query costs |
A worked example makes the stakes concrete: a 10 TB dataset queried as raw CSV can cost tens of thousands of dollars a month, while the same data as partitioned, Snappy-compressed Parquet can cost a rounding error. Also enable query result reuse so repeated queries do not re-scan, and convert data with Glue or Athena CTAS. For where this fits in a broader plan, see our cloud cost optimization strategies guide.
Default to on-demand. It is the right choice for ad-hoc analysis, spiky query patterns, and any team whose monthly scan volume is unpredictable, because you pay only for what you scan and nothing between queries. Move to provisioned capacity when your workload is steady and heavy, roughly 100 terabytes a month or more, or when you need guaranteed concurrency for dashboards and scheduled jobs. Many mature teams run both: on-demand for exploration, a small reservation for predictable production workloads. Whichever you pick, optimizing data layout matters more than the pricing model, since a well-partitioned Parquet table is cheap on either.
Athena's pricing is honest in a way that trips people up: it charges you for exactly what you make it read. That means the query is rarely the problem and the storage layout almost always is. Get three things right, store data as compressed Parquet or ORC, partition on the columns you filter by, and select only the columns you need, and Athena becomes one of the cheapest ways to query a data lake in existence. Ignore them, and it becomes a cautionary tale told in Cost Explorer. The bill is not set by how much data you have; it is set by how much data you make Athena touch.
Athena's on-demand price is $5.00 per terabyte of data scanned, rounded to the nearest 10 MB with a 10 MB minimum per query. Provisioned capacity is an alternative at about $0.30 per DPU-hour. DDL statements and failed queries that scan no data are free.
Failed queries that scan no data and DDL statements like CREATE TABLE are free. However, cancelled queries are billed for whatever data they scanned before you stopped them, which surprises teams during development.
By default, per data scanned: $5 per TB read from S3, regardless of result size. A SELECT * on a 100 GB file costs about $0.50 even if it returns ten rows. Provisioned capacity instead charges per DPU-hour for reserved compute.
Scan less data. Convert to columnar Parquet or ORC (an 85 to 99 percent reduction), partition tables by common filters like date, compress files, avoid SELECT *, compact small files, enable query result reuse, and set workgroup per-query scan limits.
S3 storage for the data, S3 GET requests per query, Glue Data Catalog charges beyond the free million objects, and Lambda charges for federated queries. None appear under the Athena service line, so the real cost is higher than the Athena number alone.