We Measured Shipping on 1,124,045 Newegg Listings. It Falls Hardest on Cheap Items.

A single-retailer study of stated shipping cost across 1.12 million live listings, with the method and the SQL, so anyone can check it.

What this is, and what it is not

On 4 September 2026 we loaded Newegg’s full product catalog from its Rakuten Advertising product feed and measured what it says about shipping. The catalog held 1,124,045 in-stock listings on that date. Every figure below is a count over those rows, and the queries that produced them are printed at the end so the work can be repeated or contradicted.

This is one retailer. It is not a survey of American online shopping, and nothing here should be read as one. Newegg is weighted heavily toward electronics and computer hardware — 660,034 of the listings sit in Electronics alone — so its shipping behaviour is its own, not the market’s. We are publishing it because a census of one large catalog is a real, checkable fact, and an extrapolation from it would not be.

We have no relationship with this data beyond an affiliate partnership with the retailer, which is disclosed on every page of this site. That partnership does not change the arithmetic, but you should know it exists while reading a study about that retailer.

Shipping is stated, and 15% of listings charge it

The first result is the least interesting and the most reassuring: all 1,124,045 listings state a shipping cost. There are no blanks to interpret. That is worth saying plainly, because a feed that omits shipping forces every downstream comparison to guess, and a guess presented as a total is how shoppers get surprised at checkout.

Of those, 955,811 listings state free shipping and 168,234 state a charge. So roughly one listing in seven adds a cost that the advertised price does not show. On its own that is unremarkable. What the distribution does with it is not.

The finding: shipping is regressive

Split the catalog by item price and the pattern is consistent in both directions at once. Cheaper items are more likely to carry a shipping charge, and when they do, that charge is a far larger share of what you pay.

Under

0, 38.2% of listings charge shipping, averaging $6.26 — which is 121.2% of the item price. Above 00, 4.2% charge shipping, averaging 0.87, which is 4.9% of the item price. The absolute shipping cost rises with price, as you would expect. The burden moves the opposite way.

Stated shipping by item price, Newegg catalog, 4 September 2026 (n = 1,124,045)
Item priceListingsCharge shippingAvg when chargedAs % of item price
Under
0
35,46838.2%$6.26121.2%
0 to 5
230,95027.8%$6.3638.7%
5 to $50259,95517.4%$6.9119.9%
$50 to 00380,6659.5%$8.3610.4%
00 and above217,0074.2%0.874.9%

5,661 listings cost more to ship than to buy

Taken to its conclusion, the pattern produces a category of listing where the shipping exceeds the item itself. There are 5,661 of them, half a percent of the catalog. A $4 cable with $7 shipping is not a mispriced cable; it is a

1 purchase advertised at $4.

This is the mechanism behind a complaint most people have felt without being able to name: the cheap thing was not cheap. It is not deception, and no rule is being broken. The price shown is the price of the item. The shipping is disclosed, further down, after the decision to click has already been made.

Why cross-retailer comparison is a data problem, not a matching problem

One more figure is worth reporting because it cuts against a common assumption. Of the 1,124,045 listings, 1,105,401 carry a UPC and 1,117,368 carry a manufacturer part number — 98.3% and 99.4%. Identifier coverage in this catalog is close to total.

That matters because comparing prices across retailers is usually described as a hard matching problem, as though the difficulty were working out which listings describe the same product. Where identifiers are supplied, it is not hard. This retailer supplies them on essentially everything it sells. The comparisons that fail elsewhere fail because the identifiers were never published, not because the matching is beyond reach.

Method

The source is Newegg’s complete product file from the Rakuten Advertising Product Catalog programme, retrieved by SFTP on 4 September 2026 and generated by Rakuten at 11:16 UTC that day. It is a pipe-delimited file of 1,124,055 records: one header record, and 1,124,054 product rows.

Rows were parsed positionally, since the format carries no column-name header, and each was stored only if its destination could be verified as a real product page on the retailer’s own domain. Ten rows failed that check and were excluded, which is why the analysed total is 1,124,045 rather than 1,124,055. No other filtering was applied: no sampling, no category selection, no outlier removal.

Prices and shipping costs are the advertiser’s own stated values. We did not model, estimate or infer any figure in this study. Where a value was absent it would have been reported as absent — in this catalog, none were. Percentages of item price are computed per listing and then averaged, not derived from the averages, so a small number of very cheap items cannot distort the ratio through division of aggregates.

The figures describe one day. Catalog prices and shipping terms change, and a rerun next month will not reproduce these numbers exactly. The date is stated on every figure for that reason.

The queries

These are the exact statements behind every number above, run against the stored catalog. The table is named advertiser_feed_offers; item_price and shipping_cost are the advertiser’s stated values in USD.

-- Totals, identifier coverage, and stated shipping (the n for everything below)
SELECT count(*) AS total,
       count(upc) AS with_upc,
       count(mpn) AS with_mpn,
       count(shipping_cost) AS shipping_stated,
       count(*) FILTER (WHERE shipping_cost = 0) AS stated_free,
       count(*) FILTER (WHERE shipping_cost > 0) AS stated_paid
FROM advertiser_feed_offers;

-- Shipping burden by item price band (the table above)
SELECT CASE WHEN item_price < 10  THEN 'under 
0' WHEN item_price < 25 THEN '
0 to 5' WHEN item_price < 50 THEN '5 to $50' WHEN item_price < 200 THEN '$50 to 00' ELSE '00 and above' END AS band, count(*) AS listings, round(100.0 * count(*) FILTER (WHERE shipping_cost > 0) / count(*), 1) AS pct_charging, round(avg(shipping_cost) FILTER (WHERE shipping_cost > 0)::numeric, 2) AS avg_shipping, round(avg(100.0 * shipping_cost / item_price) FILTER (WHERE shipping_cost > 0)::numeric, 1) AS pct_of_item_price FROM advertiser_feed_offers GROUP BY 1 ORDER BY 1; -- Listings where shipping exceeds the item price SELECT count(*) FROM advertiser_feed_offers WHERE shipping_cost > item_price;

What we take from it

The practical reading is narrow and we will not stretch it. On this retailer, on this date, the advertised price was a reliable guide to what you pay for expensive items and an unreliable one for cheap items. If you are buying something under 5, the number on the tile is the number least worth trusting.

That is also the reason this engine compares delivered totals rather than item prices, and reports shipping as confirmed only when a retailer has actually stated it. The alternative — ranking by item price and hoping shipping is free — is wrong most reliably in exactly the price range where people are most careful with money.

If you want to check any of this, the queries are above and the source is a feed any Rakuten publisher approved for Newegg’s Product Catalog can retrieve. We would rather be corrected than believed.

Related guides