localsend

    localsend/localsend

    #347 this week

    An open-source cross-platform alternative to AirDrop

    mobile
    dart
    file-sharing
    flutter
    flutter-apps
    Dart
    Apache-2.0
    89.8K stars
    5.0K forks
    89.8K GitHub watchers
    Updated 8/31/2026
    View on GitHub

    Build with Backblaze B2

    SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.

    Explore Backblaze Labs

    Loading star history...

    Use Cases & Benefits

    • Enables secure, offline file and message sharing between nearby devices over a local network using a cross-platform app.
    • Eliminates the need for internet or third-party servers by using HTTPS encryption and a REST API for fast, private local communication.
    • Use for transferring files securely between mobile and desktop devices without internet access in home or office environments.
    • Use for sharing sensitive documents or media locally at events or meetings where internet connectivity is restricted or unavailable.
    • Use for developers needing an open-source, cross-platform alternative to AirDrop that supports Android, iOS, Windows, macOS, and Linux.

    About localsend

    LocalSend

    CI status Translations Packaging status

    HomepageDiscordGitHubCodeberg

    English (Default)EspañolفارسیFilipinoFrançaisIndonesiaItaliano日本語ភាសាខ្មែរ한국어PolskiPortuguês BrasilРусскийภาษาไทยTürkçeУкраїнськаTiếng Việt中文

    LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.

    About

    LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication.

    Sponsors

    Browser testing via

    Screenshots

    iPhone screenshot PC screenshot

    Download

    Packaging status

    It is recommended to download the app either from an app store or from a package manager because the app does not have an auto-update.

    WindowsmacOSLinuxAndroidiOSFire OS
    WingetApp StoreFlathubPlay StoreApp StoreAmazon
    ScoopHomebrewNixpkgsF-Droid
    ChocolateyDMG InstallerSnapAPK
    EXE InstallerAUR
    Portable ZIPTAR
    DEB
    AppImage

    Read more about distribution channels.

    Windows binaries are signed. Read more about the Code signing policy.

    [!CAUTION] Unofficial MSIX preview: you can try builds from the latest commits at localsend.ob-buff.dev. Stability is not guaranteed and all custom code tweaks are listed on that site.

    Compatibility

    PlatformMinimum VersionNote
    Android5.0-
    iOS12.0-
    macOS11 Big SurUse OpenCore Legacy Patcher 2.0.2 (See #1005)
    Windows10The last version to support Windows 7 is v1.15.4. There might be backports of newer versions for Windows 7 in the future.
    LinuxN.A.Deps: Gnome: xdg-desktop-portal and xdg-desktop-portal-gtk, KDE: xdg-desktop-portal and xdg-desktop-portal-kde

    Setup

    In most cases, LocalSend should work out of the box. However, if you are having trouble sending or receiving files, you may need to configure your firewall to allow LocalSend to communicate over your local network.

    Traffic TypeProtocolPortAction
    IncomingTCP, UDP53317Allow
    OutgoingTCP, UDPAnyAllow

    Also make sure to disable AP isolation on your router. It should be usually disabled by default but some routers may have it enabled (especially guest networks). See troubleshooting for more information.

    Portable Mode

    (Introduced in v1.13.0)

    Create a file named settings.json located in the same directory as the executable. This file can be empty. The app will use this file to store settings instead of the default location.

    Start hidden

    (Updated in v1.15.0)

    To start the app hidden (only in tray), use the --hidden flag (example: localsend_app.exe --hidden).

    On v1.14.0 and earlier, the app starts hidden if autostart flag is set, and the hidden setting is enabled.

    How It Works

    LocalSend uses a secure communication protocol that allows devices to communicate with each other using a REST API. All data is sent securely over HTTPS, and the TLS/SSL certificate is generated on the fly on each device, ensuring maximum security.

    For more information on the LocalSend Protocol, see the documentation.

    Dependency Hierarchy

    Dependency hierarchy

    Getting Started

    To compile LocalSend from the source code, follow these steps:

    1. Install Flutter directly or using fvm (see version required)
    2. Install Rust
    3. Clone the LocalSend repository
    4. Run cd app to enter the app directory
    5. Run flutter pub get to download dependencies
    6. Run flutter run to start the app

    [!NOTE] LocalSend currently requires an older Flutter version (specified in .fvmrc) and thus build issues may be caused by a mismatch between the required and the (system-wide) installed Flutter version.
    To make development more consistent, LocalSend uses fvm to manage the project Flutter version. After installing fvm, run fvm flutter instead of flutter.

    Contributing

    We welcome contributions from anyone interested in helping improve LocalSend. If you'd like to contribute, there are a few ways to get involved:

    Translation

    You can help translate LocalSend into other languages. We use the Weblate platform to manage translations.

    Alternatively, you can also contribute by forking this repository and adding translations manually.

    The translations are located in the app/assets/i18n directory. Edit the _missing_translations_<locale>.json or strings_<locale>.i18n.json file to add or update translations.

    Translation status

    Take note: Fields decorated with @ are not meant to be translated; they are not used in the app in any way, being merely informative text about the file or to give context to the translator.

    Bug Fixes and Improvements

    • Bug Fixes: If you find a bug, please create a pull request with a clear description of the issue and how to fix it.
    • Improvements: Have an idea for how to improve LocalSend? Please create an issue first to discuss why the improvement is needed.

    For more information, see the contributing guide.

    Troubleshooting

    IssuePlatform (Sending)Platform (Receiving)Solution
    Device not visibleAnyAnyMake sure to disable AP-Isolation on your router. If it is enabled, connections between devices are forbidden.
    Device not visibleAnyWindowsMake sure to configure your network as a "private" network. Windows might be more restrictive when the network is configured as public.
    Device not visiblemacOS, iOSAnyYou can try to toggle the "Local Network" permission under "Privacy" in the OS settings.
    Speed too slowAnyAnyUse 5 Ghz; Disable encryption on both devices
    Speed too slowAnyAndroidKnown issue. https://github.com/flutter-cavalry/saf_stream/issues/4

    Building

    These commands are intended for maintainers only. Make sure to run them from the app directory.

    Android

    Traditional APK

    flutter build apk
    

    AppBundle for Google Play

    flutter build appbundle
    

    iOS

    flutter build ipa
    

    macOS

    flutter build macos
    

    Windows

    Traditional

    flutter build windows
    

    Local MSIX App

    flutter pub run msix:create
    

    Store ready

    flutter pub run msix:create --store
    

    Linux

    Traditional

    flutter build linux
    

    AppImage

    appimage-builder --recipe AppImageBuilder.yml
    

    Snap

    Instructions in localsend/snap/README.md

    Contributors

    Localsend Contributors

    Discover Repositories

    Search across tracked repositories by name or description