# Introduction

Freighter is a non-custodial wallet for the Stellar network, available as a browser extension and a mobile app. Non-custodial means your users hold their own keys — your dapp never sees or stores private keys. This guide walks you through integrating Freighter so your users can connect their wallets, sign transactions, and interact with Soroban smart contracts.

## What You Can Build

With Freighter, your dapp can connect a user's wallet with a single call — no signup form, no password, just a familiar wallet popup and an immediate public key. From there you can read their active network, hand off transactions for signing, and submit to the network.

For dapps that integrate with smart contracts, Freighter also handles authorization entry signing for smart contract calls and arbitrary message signing for account verification.

## How It Works

The integration model is simple: your dapp talks to the wallet, and the wallet talks to the user.

For **desktop browsers**, you integrate with the Freighter extension through a lightweight JavaScript library. It injects itself into the page, and your dapp calls methods like "is the wallet connected?", "what's the user's address?", and "please sign this transaction."

For **mobile**, the integration works over WalletConnect v2. When a user opens your dapp in a mobile browser, WalletConnect presents a modal where they select Freighter as their wallet and approve the connection. On desktop, the same flow can display a QR code for the user to scan. Either way, a secure relay session is established and signing requests flow through the same pattern — your dapp proposes, the user reviews and approves in the wallet.

Both paths produce the same output: signed transactions you can submit to the Stellar network. So your backend and submission logic stay the same regardless of whether your user connected from a laptop or a phone.

If you want to support multiple Stellar wallets — not just Freighter — take a look at [Stellar Wallets Kit](https://stellarwalletskit.dev/). It provides a unified interface across Stellar wallets, including browser extensions and WalletConnect-based mobile wallets, so your users can connect with whichever wallet they prefer.

> **Note:** Stellar Wallets Kit's WalletConnect module currently only exposes `stellar_signXDR` and `stellar_signAndSubmitXDR`. If your dapp needs `stellar_signMessage` or `stellar_signAuthEntry` against Freighter Mobile, integrate WalletConnect directly for now (tracked in [stellar/freighter-mobile#815](https://github.com/stellar/freighter-mobile/issues/815)).

## Why Freighter

**Built and maintained by SDF.** Freighter is developed by the Stellar Development Foundation, the same team behind the core Stellar protocol and SDKs.

**Complete Stellar support.** Transaction signing, Soroban authorization entry signing with contract invocation inspection, SEP-53 message signing, contract token management, and Blockaid transaction scanning.

**Desktop and mobile.** Browser extension for desktop, WalletConnect for mobile. Both paths produce the same signed output, so your dapp supports both with minimal branching.

## Get Started

**Desktop** — integrate with the Freighter browser extension using `@stellar/freighter-api`. See the [Extension Guide](/extension-freighter-api/installation.md).

**Mobile** — connect to Freighter Mobile over WalletConnect v2. See the [Mobile Guide](/mobile-walletconnect/mobile.md).

**Both** — if your dapp needs to support desktop and mobile users, use both integration paths. Both produce the same output (signed XDR), so your submission logic stays the same regardless of how the user connected.

## Quick links

| I want to...         | Extension                                                        | Mobile                                                |
| -------------------- | ---------------------------------------------------------------- | ----------------------------------------------------- |
| Install / set up     | [Installation](/extension-freighter-api/installation.md)         | [Installation](/mobile-walletconnect/installation.md) |
| Connect to Freighter | [Connecting](/extension-freighter-api/connecting.md)             | [Connecting](/mobile-walletconnect/connecting.md)     |
| Sign a transaction   | [Signing](/extension-freighter-api/signing.md)                   | [Signing](/mobile-walletconnect/signing.md)           |
| Add a token          | [Token Management](/extension-freighter-api/token-management.md) | —                                                     |
| Try it out           | [Playground ↗](https://play.freighter.app)                       | [Playground ↗](https://play.freighter.app)            |

## Resources

* [GitHub — Freighter Extension](https://github.com/stellar/freighter)
* [GitHub — Freighter Mobile](https://github.com/stellar/freighter-mobile)
* [Freighter on Chrome Web Store](https://chromewebstore.google.com/detail/freighter/bcacfldlkkdogcmkkibnjlakofdplcbk)
* [Freighter on Firefox Add-ons](https://addons.mozilla.org/en-US/firefox/addon/freighter/)
* [Stellar Developer Docs](https://developers.stellar.org)
* [WalletConnect v2 Docs](https://docs.walletconnect.network/app-sdk/overview)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.freighter.app/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
