An IPFS Gateway acts as a bridge between traditional web browsers and IPFS. Through the gateway, users can browse files and websites stored in IPFS as if they were stored in a traditional web server.
By default, go-ipfs nodes run a gateway at
We also provide a public gateway at
https://ipfs.io. If you've ever seen a
link in the form
https://ipfs.io/ipfs/Qm..., that's being served from our
The gateway's configuration options are (briefly) described in the config documentation.
For convenience, the gateway (mostly) acts like a normal web-server when serving a directory:
- If the directory contains an
- If the path does not end in a
/, append a
/and redirect. This helps avoid serving duplicate content from different paths.†
- Otherwise, serve the
- Dynamically build and serve a listing of the contents of the directory.
†This redirect is skipped if the query string contains a
go-get=1 parameter. See PR#3964
When downloading files, browsers will usually guess a file's filename by looking
at the last component of the path. Unfortunately, when linking directly to a
file (with no containing directory), the final component is just a CID
Qm...). This isn't exactly user-friendly.
To work around this issue, you can add a
filename=some_filename parameter to
your query string to explicitly specify the filename. For example:
When you try to save above page, you browser will use passed
filename instead of a CID.
It is possible to skip browser rendering of supported filetypes (plain text,
images, audio, video, PDF) and trigger immediate "save as" dialog by appending
For convenience, the gateway exposes a read-only API. This read-only API exposes a read-only, "safe" subset of the normal API.
For example, you use this to download a block:
> curl https://ipfs.io/api/v0/block/get/bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4