Help test IPFS in Brave!

Hey everyone! Some of us have been working with Brave since last summer on an integrated go-ipfs node feature, and it’s shipping next week in the release version of Brave browser. If you haven’t tried it yet, you can give it a spin in the beta or nightly versions. Navigate to an ipfs://{cid} address and you’ll get a prompt. Any feedback appreciated! If you have specific functionality in your apps/libraries/services to test, even better - let us know how it works :pray:t3: Downloading the beta/nightly versions do not conflict with the regular release versions, and they’re available here: Download Brave Beta | Brave Browser Download Brave Nightly | Brave Browser It’s just the beginning of the features we’ll be integrating into Brave, so share any ideas for things you’d like to see, whether user- or developer-facing.

You can file issues either directly in the Brave browser repo, or here in our web browsers repo for IPFS:




I’ve done some limited testing.

Here’s some feedback:


  • IPNS and IPFS hashes work just fine.
  • html files display just fine.
  • links within mutable file directories work fine.

Feature request

  • Configurable gateway, right now it’s just dweb - It’d be nice to be able to change the gateway

I was trying Brave beta a couple of weeks ago and it kept crashing.

One thing I hope you can do is help making pinning/publishing a file using IPNS a simpler process from a GUI.

1 Like

My understanding of the Brave IPFS integration is that the browser is using the ipfs://Qm... url format to feed the hash to a public gateway. For pinning and publishing, one needs to run a local IPFS node or subscribe to a pinning service.

It should be possible to integrate a pinning API call to a service provider. However, most pinning services require an API key. I suppose the API key could be stored in the browser password cache, but that seems a bit insecure since the password cache is not encrypted.

Thanks for the feedback!

You can change it in the Extensions settings of Brave, here’s a screenshot:

YES! This first release is just the core daemon functionality. We’re planning on implementing publishing flows in subsequent releases.

1 Like

Can you try a recent one? If you’re still seeing crashing, I’d like to try and figure out why, if you’re able to help.

This feature in Brave is to run a full and complete node. Brave downloads and manages the go-ipfs daemon.

I haven’t tried the nightly version lately. At the moment I’m running this version:

Version 1.18.78 Chromium: 87.0.4280.141 (Official Build) (64-bit)

…which doesn’t seem to run a full IPFS node even when I select “Local Node” to resolve IPFS locations. However, maybe I need to remove the IPFS Companion extension rather than just disable it… or maybe just try out the nightly build.


Just tried the Beta version.

Looks great so far! I’ll try it out for a while and provide some more feedback.



  • Works well.
  • IPFS full node didn’t start if it was supposed to…
  • IPNS and IPFS URLs worked just fine.
  • Changed the gateway
  • System resources were normal


  • Was rather slow when trying to access content through the local gateway
  • IPFS node started … version 0.7.0
  • IPNS and IPFS URLs worked just fine.
  • Changing gateway works fine
  • System resources increased due to full IPFS node
  • Network connections increased due to full IPFS node, max for go-ipfs were about 170

I’d like an option to disable NAT traversal and QUIC connections. TCP connections are a little slower, but my ISP doesn’t seem to like uncontrolled IPFS nodes.

I tested on macOS, and I see that it succeeds in starting an ipfs node. I’m not sure how to access the UI for that node though; is it there?

What if I’m already running an ipfs daemon though, does Brave detect that and avoid starting up a duplicate one? I hope so. I have to test on Linux to see how that goes… but in general I don’t understand what is the best practice when writing an application that needs IPFS. You can’t assume that most users are running ipfs daemon (yet), but you also IMO shouldn’t assume that nobody is, especially now that go-ipfs ships with a systemd service file. I think eventually ipfs daemon should already be running on most systems, like sshd.

Node provided by Brave will be limiting the number of connections as noted in this issue. This just landed, so may not be set in older builds yet.

If that is not enough, you can open “My Node” from Companion (see below) and tweak low level go-ipfs config on the Settings page.

There is a basic diagnostic page at brave://ipfs

If you need more, you can install IPFS Companion and switch it to use node provided by Brave.
Then you will be able to access ipfs-webui of node managed by Brave via “My Node” button in browser action menu.

I haven’t tried that option yet… I’ll give it a try and report back… However…

A few more notes on ongoing testing of the Brave Nightly downloaded and installed on Jan 14, 2021…

  • Brave Nightly on GNU/Linux

  • Browser attempts to resolve IPFS and IPNS links before the daemon starts.

  • Access to and command line manipulation of settings and repo can be accomplished by setting the IPFS_PATH

    export IPFS_PATH=~/.config/BraveSoftware/Brave-Browser-Nightly/brave_ipfs

  • Webui can be accessed on localhost

  • Made the following changes to the default configuration:

    “Reprovider”: {
    “Interval”: “0”,
    “Strategy”: “pinned”

    “DisableNatPortMap”: true

    “Transports”: {
    “Network”: {
    “QUIC”: false

After disabling QUIC and removing the reprovider capability, the Brave IPFS node runs a bit faster and has a lower chance of being filled with general IPFS network data.

The repo size is set to 1 GB. My Brave IPFS node had about 15 MB of network data in a few minutes of being active. It would be nice to have a few settings in the extension tab that shut off reprovider and change the repo size. A 1 GB limit may not seem to large. However, a user isn’t going to understand that their hard drive space is going to be used by other network members. It would also be great to have a “trash” button that runs a GC … along with a GC on exit from Brave if a user has set “Clear All Cache” on exit.

Mind elaborating why you disabled QUIC (and not TCP)?
QUIC + lower number of connections should behave fine without need for any additional tweaking.
What type of problems are you experiencing wit your ISP?

UI for changing the datastore size will most likely be added in later releases.

Exposing GUI for disabling reproviding is more challenging.
When you disable reproviding it makes it impossible to use IPFS for publishing and sharing. Importing a file and sharing its CID won’t work unless someone else is providing the file+CID to the network or other peer is directly connected to you. This means we need to disable all related features (current and future), which adds complexity. For this reasons think it will remain a “power-user setting” available only via JSON config for the time being. We may revisit this when we have delegated pinning ecosystem ready (then you can have those features, as long you set up a pinning service).

I believe described behavior was recently added:

Brave was mentioned on HackerNews website and all over the web recently for it’s IPFS support. Here’s a couple of links I found today, which I’ll post here just since everyone is probably interested. IPFS is growing fast!


Can someone explain how to use ipfs. I installed the desktop on my machine. Now what do I do? How do I find ipfs websites? How do I find files that someone shares? How do I do anything.

Sorry for ignorance.


IPFS is currently more of a name of a technology than something end users just “go and use” but basically one simple example use case would be you could to go and learn how to upload a file, and then your file will be available in to use in other places on the web using it’s URL, and anyone using IPFS technology can get that file.

1 Like

I am really new to the ipfs. What I noticed was some random hiccups on the speed of my internet connection, while the ipfs companion extension on brave was active. Is this something normal and expected?

I’d say it depends. Download speed depends on how many peers are providing the content you are looking for. If you are browsing popular content like ipns:// then you will most likely get it faster than if you are fetching something that is provided only by a few or one peer, as it takes longer to find a reliable provider.

I know with earlier versions of IPFS (not sure about IPFS Companion) just by installing IPFS and starting it, you would notice a massive amount of bandwidth being consumed, even when you aren’t downloading anything. Clearly the rest of the network is just “making use of” it’s newfound resources. lol.

In my docker instance, the solution was to set routing to “dhtclient” and/or profile to “lowpower” to stop it from hogging resources, but for some reason the default settings were to just go ahead and hog. I think the philosophy was sort of like with BitTorrent, where simply being a part of the network means they want to go ahead and use your resources.

1 Like

The default config of go-ipfs daemon is optimized for server use.

IPFS Desktop and Brave come with custom configuration tailored towards desktop use and consumer-grade networks (lower number of maintained connections, smaller datastore, enabled GC etc).

Regarding older versions, could be:

  • Old versions of ipfs-webui preloaded a lot of geoip data from IPFS, which produced huge traffic spike and gave users the impression that IPFS is expensive to run.
    This has been fixed and geoip lookups are executed only when the user opens Peers screen.
  • go-ipfs 0.5.0 enabled AutoNAT service by default, making nodes switch to DHT server only when it makes sense. This switched many go-ipfs nodes to dhtclient mode (even if they had no --routing=dhtclient) and decreased the “ambient metadata traffic” significantly.
1 Like