The extension provides deep Lightning Network integration for websites (for payments and authentication flows).
The goal is to write a minimal web extension to allow browsers to interact with the Lightning Network programmatically. It focusses on the web-payments process and does not try to be a full node UI with advanced channel-management or similar features.
The extension implements the WebLN standard as the interface that allows websites to connect to Lightning Network nodes (to request payments, invoices, signatures, login, etc.) and enable seamless UX of web payments and authentications.
The extension can connect to different node implementations and supports custodial and non-custodial setups.
- Custom budgets/allowances for websites to allow payment streams/auto-payments
- Multiple accounts and support for different node backends (lnd, etc.)
- Full WebLN send and receive payment flows (getInfo, sendPayment, fixed makeInvoice support)
- LNURL-pay support
- LNURL-auth support
- Payment history with additional website metadata
- LNURL-withdraw support
- WebLN signMessage, verifyMessage support
- WebLN dynamic makeInvoice support
- Lsat support
We have a channel on the bitcoin.design Slack community #lightning-browser-extension and a Telegram group Come and join us!
We also do a weekly call at 13:00 UTC - (15:00 CEST/CAT - 09:00 EDT) on https://meet.jit.si/bitcoindesign
Download Nightly releases
- Firefox Nightly - best install it as temporary add-on as discussed in the "Load extension into browser" section
- Chrome Nightly - go to
chrome://extensions/, enable "Developer mode" (top right) and drag& drop the file
(Note: You might need to reconfigure your wallet after installing new versions)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|---|
| 49 & later ✔ | 52 & later ✔ | 36 & later ✔ | 79 & later ✔ | Latest ✔ | Latest ✔ | Latest ✔ |
./lightning-browser-extension
├── src # Source Code
│ ├── app # React UI App
│ ├── extension # Browser Extension
│ ├── common # Helpers and utilities used by both the React App and the Browser Extension
├── static # Static Resources
│ ├── assets # Images, logos, etc
│ └── views # Static HTML files
├── doc # Documentation (guidelines, architecture docs, etc)
├── dist # Build
│ └── development # Developer Builds (not to be shared)
│ └── production # Production Builds
└
Ensure you have
Then run the following:
yarn installto install dependencies.yarn run dev:chrometo start the development server for chrome extensionyarn run dev:firefoxto start the development server for firefox addonyarn run dev:operato start the development server for opera extensionyarn run build:chrometo build chrome extensionyarn run build:firefoxto build firefox addonyarn run build:operato build opera extensionyarn run buildbuilds and packs extensions all at once to extension/ directory
-
yarn installto install dependencies -
To watch file changes in development
- Chrome
yarn run dev:chrome
- Firefox
yarn run dev:firefox
- Opera
yarn run dev:opera
- Chrome
-
Chrome
- Go to the browser address bar and type
chrome://extensions - Check the
Developer Modebutton to enable it. - Click on the
Load Unpacked Extension…button. - Select the extension’s dist directory:
dist/development/chrome
- Go to the browser address bar and type
-
Firefox
- Load the Add-on via
about:debugging=>This Firefoxas temporary Add-on. (about:debugging#/runtime/this-firfox) - Choose a .xpi file or the
manifest.jsonfile in the extension's dist directory:dist/development/firefox - debugging details
- To see the debug console click "inspect" on the list of temporary extensions (
about:debugging#/runtime/this-firefox)
- Load the Add-on via
-
Opera
- Load the extension via
opera:extensions - Check the
Developer Modeand load as unpacked from extension’s extracted directory.
- Load the extension via
** Use the development LND account**
To connect to a remote development LND node you can use a test account Configure BOB in the extension and pay ALICE on https://regtest-alice.herokuapp.com/
yarn run buildbuilds the extension for all the browsers toextension/BROWSERdirectory respectively.
Note: By default the manifest.json is set with version 0.0.0. The webpack loader will update the version in the build with that of the package.json version. In order to release a new version, update version in package.json and run script.
If you don't want to use package.json version, you can disable the option here.
For native connections the extension passes each call to a native application (using native messaging). The native application does all the user interaction and connections to the lightning wallet.
Currently there is one prototype of a native companion app which can connect to LND: lnd-native-companion
We welcome and appreciate new contributions.
If you're a developer looking to help but not sure where to begin, check out the issues that have specifically been marked as being friendly to new contributors here.
If you're looking for a bigger challenge, before opening a pull request please create an issue or join our community chat to get feedback, discuss the best way to tackle the challenge, and to ensure that there's no duplication of work.
Joule is a full interface to manage a LND node. It only supports one LND account.
Our goal is NOT to write a full UI for a Lightning Network node with all the channel management features, but instead to only focus on what is necessary for the web (for payment and authentication flows). We believe there are already way better management UIs.
Also we focus on supporting multipe different node backends (non-custodial and custodial).
WebLN is a library and set of specifications for lightning apps and client providers to facilitate communication between apps and users' lightning nodes in a secure way. It provides a programmatic, permissioned interface for letting applications ask users to send payments, generate invoices to receive payments, and much more. This documentation covers how to use WebLN in your Lightning-driven applications.
Based on the web extension starter kit: /abhijithvijayan/web-extension-starter
heavily inspired by the super amazing work of the Joule extension
MIT







