---
title: "imgd.dev vs img402: Reusable Storage or Per-Image Payment?"
description: "Compare imgd.dev storage accounts with img402 account-free uploads across price, authentication, limits, retention, formats, and retries."
slug: imgd-vs-img402
date: 2026-08-20
updated: 2026-08-20
last_tested: 2026-08-20
summary: "Choose img402 for no-account free uploads or $0.01 per-image payment. Choose imgd.dev for reusable storage, image management, and content-addressed URLs."
cluster: Choosing a host
intent: comparison
sources:
  - title: "imgd.dev agent reference"
    url: https://imgd.dev/llms.txt
  - title: "imgd.dev OpenAPI specification"
    url: https://imgd.dev/openapi.json
  - title: "img402 API reference"
    url: https://img402.dev/docs
  - title: "img402 terms"
    url: https://img402.dev/terms
---

# imgd.dev vs img402: Reusable Storage or Per-Image Payment?

Choose img402 for no-account free uploads or current **$0.01 USDC per-image** permanent uploads.
Choose imgd.dev when reusable storage and image management fit the workflow.
imgd.dev uses an account key and a one-time **$1 per GB** storage purchase.
Both services produce public image URLs, but they use different payment and retry models.

**Fact checked: 2026-08-20**

**Disclosure:** imgd.dev publishes this comparison.

Every image served by imgd.dev is public.
img402 also states that all uploaded images are public.
Do not upload private, confidential, or sensitive images to either service.

## The short decision

| Need | Better choice | Reason |
| --- | --- | --- |
| No account and no API key | **img402** | Its free endpoint needs no authentication. Its paid flow uses payment as authentication. |
| A free upload path | **img402** | Its free endpoint accepts images within its current free limits. imgd.dev has no free tier. |
| Payment for one permanent image | **img402** | The current paid route costs $0.01 USDC per image. |
| Reusable storage quota | **imgd.dev** | A one-time $1 purchase adds 1 GB to the same account. Purchases stack. |
| List, inspect, unpublish, republish, and delete | **imgd.dev** | Its account API manages a reusable image library. |
| Retry after an uncertain upload response | **Depends** | imgd.dev keys retries by content. img402 keys paid retries by payment proof. |
| AVIF upload | **imgd.dev** | imgd.dev accepts AVIF. The current img402 format list does not include AVIF. |

## Pricing model

### imgd.dev

imgd.dev sells storage capacity.
A one-time $1 payment adds 1 GB to an account.
Purchases stack and do not expire.
There is no free tier or free trial.

The account can use that storage for many images.
Each stored image counts against the account quota.
Unpublished bytes still count because the service retains them for republish.

### img402

img402 sells each paid upload separately.
The current permanent route costs $0.01 USDC per image through x402.
The service also has a free upload endpoint.

The current free policy is size-dependent:

- A file of 1 MB or less has no scheduled expiry.
- A file above 1 MB and up to 10 MB lasts 30 days.
- Free uploads remain subject to daily global and per-IP capacity limits.

The terms describe free no-expiry retention as a courtesy.
The paid permanent tier lasts for the operational life of the service.
The terms provide a 90-day on-site wind-down notice for paid permanent images.

## Authentication and setup

### imgd.dev uses a reusable account key

One API call creates an imgd.dev account without email or a captcha.
The response shows the API key once.
Store it in `$IMGD_KEY` outside the repository.

All later management calls use this header:

```sh
-H "Authorization: Bearer $IMGD_KEY"
```

The account starts with zero storage.
Fund it before the first upload.

### img402 uses no account or API key

The free img402 endpoint needs no authentication.
The paid flow uses x402 payment as authentication.
A caller can request a paid upload token, then use that token once.

This model removes account setup and key storage.
It fits a caller that wants one image transaction instead of a reusable library.

## Limits and formats

| Detail | imgd.dev | img402 |
| --- | --- | --- |
| Maximum file size | 20 MB | 10 MB |
| Formats | JPEG, PNG, GIF, WebP, AVIF | PNG, JPEG, GIF, WebP |
| Upload rate | 60 uploads per minute per key | Free daily caps apply; the cited docs do not state a numeric cap |
| Storage model | Reusable account quota | One free or paid result per upload |
| Public serving | Yes | Yes |

Do not infer a limit that a first-party page does not state.
Check the source pages again before a production decision.

## Retention and management

imgd.dev links are permanent by default.
A caller can set an expiry, unpublish now, republish the same URL, or delete the image.
The account API also lists images and returns metadata for one hash.

img402 free retention depends on file size.
A paid image has no scheduled expiry under the permanent tier.
The account-less design does not provide a reusable account identity.

Choose imgd.dev when the workflow needs a managed set of images.
Choose img402 when each image can remain an independent transaction.

## Retry model

### imgd.dev retries by content

imgd.dev computes SHA-256 from the bytes.
Identical bytes return the same hash and public URL.
A repeated upload reuses the stored result and its moderation result.

This model handles a lost response after the server accepts the image.
Retry the same bytes with a bounded policy.
Read [safe image upload retries](/blog/image-upload-retry-content-hash/) for a complete example.

### img402 paid retries by payment proof

img402 states that every paid request is idempotent.
The same payment proof returns the same result.
A caller can retry after a network failure without a second charge.

That guarantee applies to the paid request model described in the docs.
Do not apply it to a free request unless the current docs add that claim.

## Error recovery

imgd.dev returns an `error` code and a plain-language `fix` for each `4xx` response.
A caller can branch on `401`, `402`, `413`, `415`, and `429`.
It must not retry every client error.

img402 returns an `error` code and a human-readable `message`.
Its docs list errors for missing files, large files, unsupported formats, tokens, payment, capacity, and server failures.

For a status-aware caller, read [how actionable API errors help agents recover](/blog/actionable-api-errors-ai-agents/).

## Where img402 is better

Choose img402 when any item below is central:

- The caller must use no account and no API key.
- The caller needs a free upload within the current free policy.
- The caller wants a $0.01 USDC payment for one permanent image.
- The caller already supports x402 payment proof.
- The caller does not need a reusable image library.

## Where imgd.dev is better

Choose imgd.dev when any item below is central:

- The caller wants one reusable storage balance.
- The caller needs to list and inspect stored images.
- The caller needs unpublish, republish, or delete operations.
- The caller wants the same URL from the same bytes.
- The caller needs AVIF or a file size above 10 MB and at most 20 MB.

imgd.dev is not suitable for private images, a free trial, video, or full digital-asset management.
Use a different service when any of those items is required.

## Sources and access date

All sources below are first-party pages.
They were accessed on **2026-08-20**.

- imgd.dev reference: https://imgd.dev/llms.txt
- imgd.dev OpenAPI: https://imgd.dev/openapi.json
- img402 API reference: https://img402.dev/docs
- img402 terms: https://img402.dev/terms

For other payment models, read [image hosting APIs without a subscription](/blog/image-hosting-api-without-subscription/).
Use [`/evaluate.md`](/evaluate.md) to give an agent the current imgd.dev fit checklist.
