Home / Storage
iNaturalist
www.inaturalist.orgCitizen science observation platformstorage/inaturalistJSONcomparereport an errorprovider JSON
- Free allowance
- No per-account quota published or enforced (395,436,915 observations live at time of probe).
- Verdict
- fails: quotathe free allowance is too small to matter
- Cost
- free tier
- Identity
- emailno card, no phone
- Binding limit
- per-object-cap20 MB/file
- Evidence
- reported5 sources; a third party said so
- Freshness
- stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
| Free tier | No per-account quota published or enforced (395,436,915 observations live at time of probe). But per-object: 20 MB/file upload cap, AND every image is re-encoded to a 2048 px longest edge — so the stored 'original' is not your original. unit MB; metered on stored-bytes |
|---|
| Price | none stated |
|---|
| Limits | - per-object-cap (binding) 20 MB/file source
20 MB/file; downsample to 2048×2048 max on the longest edge; API 100 req/min |
|---|
| Identity | email email — verified the live signup form at /users/new: user[login], user[email], user[password] only, plus a reCAPTCHA widget. No affiliation field exists. |
|---|
| Egress | free, no auth, static.inaturalist.org serves 5 sizes; API 100 req/min (asked to stay at 60) |
|---|
| Per-object cap | 20 MB/file (20000000 bytes) |
|---|
| Retention | not stated |
|---|
| Interface | rest REST v1 + v2 — POST /v1/observation_photos and POST /v1/photos accept multipart file; pyinaturalist wraps it |
|---|
| Tooling | pyinaturalist (add_photo_to_observation, upload), REST directly |
|---|
| Composes with | Good write API, bad read fidelity. Every returned photo is ≤2048 px; the size ladder is square/large/medium/small/original and 'original' is a misnomer. |
|---|
| Reliability | Measured on a live asset: /photos/753863865/original.jpg = 3,881,965 bytes at dimensions reported as 1536×2048, i.e. already clamped. Mods state plainly: 'That term [original] is probably misleading ... everything larger is reduced to 2048.' |
|---|
| Parsed numbers | - has-free-tier 1
- per-object-cap 20 MB
|
|---|
Evidence 5
| date | source | what it proved |
|---|
| 2026-10-21 | api.inaturalist.org/v1/observations?per_page=1&photos=true | total_results 395436915; photo objects carry original_dimensions {width,height} capped at 2048 |
| 2026-10-21 | static.inaturalist.org/photos/753863865/{original | large,medium,small,square}.jpg — 200 in all five, 3,881,965 / 1,164,886 / 340,333 / 92,808 / 14,515 bytes |
| 2026-10-21 | forum.inaturalist.org/t/original-image-not-showing-in-full-r | 'The term original is probably misleading ... everything larger is reduced to 2048' |
| 2026-10-21 | www.inaturalist.org/users/new | form fields user[login], user[email], user[password] + reCAPTCHA |
| 2026-10-21 | forum.inaturalist.org/t/image-for-linking-to-in-an-observati | staff: the forum has 'a storage limit to our subscription', i.e. this is not a general-purpose host |
More fields 1
| dead end | {"failure_class": "quota","why": "No per-account quota published or enforced (395,436,915 observations live at time of probe). But per-object: 20 MB/file upload cap, AND every image is re-encoded to a 2048 px longest edge — so the stored 'original' is not your original.","retry_when": null,"first_recorded": "2026-10-21"} |
|---|
Unknown values 3
- per object cap notes: the field may be stated in a source that was not read
- retention notes: the field may be stated in a source that was not read
- retention stated: the field may be stated in a source that was not read