SimpleX
simplex.chatSimplex is gaining popularity as a secure and private messaging app renowned for its robust encryption protocol without user IDs or phone numbers and this improves your privacy. Simplex offers instant messaging, supports media attachments and voice and video calls. Additionally, it is cross-platform, open-source, and completely free, aligning with the modern user's preferences for convenience, security, and accessibility. Learn more about the Security Policy.
- Homepage:simplex.chat
- GitHub:github.com/simplex-chat/simplex-chat
- Privacy:raw.githubusercontent.com/simplex-chat/simplex-chat/stable/PRIVACY.md
- iOS App:apps.apple.com/us/app/simplex-chat-secure-messenger/id1605771084
- Android App:play.google.com/.../chat.simplex.app
- Subreddit:r/SimpleXChat
- Web info:web-check.xyz/check/simplex.chat
SimpleX Privacy Policy
Privacy Policy Summary
- The service is provided 'as is' and to be used at your sole risk
- The service provider makes no warranty regarding uninterrupted, timely, secure or error-free service
- This service is only available to users over a certain age
- Instead of asking directly, this Service will assume your consent to changes of terms merely from your usage.
- This service gives your personal data to third parties involved in its operation
- User-generated content is encrypted, and this service cannot decrypt it
- Your personal data is used for limited purposes
- Features of the website are made available under a free software license
- They may stop providing the service at any time
- The court of law governing the terms is in England and Wales
- This service assumes no liability for any losses or damages resulting from any matter relating to the service
- A free help desk is provided
- Information is provided about security practices
- Information is provided about what kind of information they collect
- Your personal data is not sold
- You agree to indemnify and hold the service harmless in case of a claim related to your use of the service
- There is a date of the last update of the agreements
- This service informs you that its Terms of Service does not apply to third party websites
- When the service wants to change its terms, you are notified 30 days in advance
Score
Documents
- Privacy PolicyCreated 17 Mar 23, Last modified 1 month ago
About the Data
This data is kindly provided by tosdr.org. Read full report at: #7638
SimpleX Source Code
Author
Description
SimpleX - the first messaging network operating without user identifiers of any kind - 100% private by design! iOS, Android and desktop apps 📱!
Homepage
https://simplex.chatRepository
- LicenseAGPL-3.0
- Created21 Dec 19
- Primary languageHaskell
- Size452,969 KB
- Stars19,371
- Forks1,361
- Watchers19,371
Top Contributors
@epoberezkin (3433)
@spaced4ndy (1501)
@avently (794)
@shumvgolove (198)
@Narasimha-sc (104)
@diogofcunha (76)
@dpwiz (62)
@IanRDavies (37)
@MSarmadQadeer (37)
@simplex-ops (18)
@markaleksanderh (9)
@angerman (8)
@evgeny-simplex (6)
@mlanp (6)
@another-simple-pixel (5)
@space-d-n (4)
@andorsk (2)
@BarbossHack (2)
@grm34 (2)
@ishi-sama (2)
@7sunarni (1)
@alexjohnyoung (1)
@alexfmpe (1)
@Mikaela (1)
@dngray (1)
@ed-asriyan (1)
@UltiRequiem (1)
@Gara-Dorta (1)
@alshafei (1)
@Float-hu (1)
@gajus (1)
@henrialb (1)
@maltfield (1)
@asyncze (1)
@MichaelBitard (1)
@miltronius (1)
@a1akris (1)
@sethforprivacy (1)
@Stirlitz1337 (1)
@UnkwUsr (1)
@rkswqt (1)
@vsevolod-mineev (1)
@Pixelycia (1)
@a1lu (1)
@Arturro43 (1)
@byrd19 (1)
@friadev (1)
@qvsojBJGiEnR (1)
@sergeyshadok (1)
@solus-hq (1)
Recent Commits
SimpleX Chat(02 Sept 26)
7.0.2: android 375, desktop 159, ios 351
Evgeny Poberezkin(01 Sept 26)
core: 7.0.0.12
Evgeny Poberezkin(29 Aug 26)
ui: update strings
Evgeny(29 Aug 26)
ui: show countdown until SimpleX domains sale launch (#7434) * ui: show countdown until SimpleX domains sale launch * list * ios: update * update kotlin, ios countdown * kotlin countdown * fix formats * padding * update --------- Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
sh(29 Aug 26)
desktop: bump vlc to v3.0.23-2 (#7407)
sh(26 Aug 26)
scripts: add chat relay docker setup (#7406) * scripts: add chat relay docker setup * docs: add docker setup to chat relay guide * scripts: bump relay ref and add RTS options * scripts: reduce comments in relay setup * scripts: increase relay pool and queue size * scripts: add relay metrics exporter * docs: trim docker section in chat relay guide * scripts: bump cabal for hackage key rotation * scripts: retry cabal update on mirror failure * scripts: split cabal update into its own layer * scripts: allow setting relay address server * docs: adjust systemd service limits * docs: mention docker volume full path
sh(25 Aug 26)
desktop: fix nanohttpd submodule check never running (#7408)
sh(20 Aug 26)
desktop: build nanohttpd from a submodule (#7396)
Evgeny(20 Aug 26)
ui: update post link in whats new (#7400) Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
Evgeny(18 Aug 26)
directory: only create group links after approval (#7356) * directory: only create group links after approval * update test * update messages * diff * get group and link in one query * reduce database reads * better errors * typos * query plans --------- Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
Evgeny Poberezkin(18 Aug 26)
7.0.1: android 372, desktop 157
Evgeny Poberezkin(18 Aug 26)
ios: 7.0.1 build 349
Evgeny(18 Aug 26)
ui: store country (#7389) * ui: store country * ios: 7.0.1 build 348 * update version * android: update versions * remove UK
sh(17 Aug 26)
desktop: fix the layout of the crowdfunding page (#7385) * desktop: fix the layout of the crowdfunding page * change image width --------- Co-authored-by: Evgeny Poberezkin <[email protected]>
Evgeny Poberezkin(17 Aug 26)
ios: fix store
Evgeny(17 Aug 26)
ios: add CF page (#7369) * ios: add cf page * add cf images * reduce image count * different design * button * simplify * texts * layout * update texts * zoom * add to settings * update text * more text * settings * remove translation * only US * update * update link * update * padding * update * update * safe area --------- Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
sh(17 Aug 26)
android, desktop: add CF page (#7373) * android, desktop: add CF page * android, desktop: update CF page * android, desktop: sync ios changes * android, desktop: sync ios CF page changes * remove utm_source --------- Co-authored-by: Evgeny Poberezkin <[email protected]>
Narasimha-sc(12 Aug 26)
ui: send dropped .webm as video only when it has a video track (#7354) * ui: send dropped .webm as video only when it has a video track .webm is as commonly an audio-only container as a video one, so the extension alone cannot tell whether there is a frame to embed. Read the container to decide: files with a video track are sent as video, the rest as files. Only done for files attached without the user saying how to send them (drag & drop, paste). An explicitly picked video is still sent as one, so .webm is now listed in the video file picker too. * plan: send dropped .webm as video only when it has a video track
sh(12 Aug 26)
android: add google and foss build flavors (#7328) * android: add google and foss build flavors * android: get the Google Play account country in the google flavor * android, desktop: update whats new * temp: comment out wefunder link
Narasimha-sc(12 Aug 26)
ui: connect when a SimpleX link is pasted as a markdown hyperlink (#7348) * ui: connect when a SimpleX link is pasted as a markdown hyperlink * remove comments Co-authored-by: Evgeny <[email protected]> --------- Co-authored-by: Evgeny <[email protected]>
Evgeny(10 Aug 26)
ios: update whats new (#7359) * ios: update whats new * custom view --------- Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
Narasimha-sc(06 Aug 26)
android, desktop: fix live message sent to the chat opened after switching (#7323) * android, desktop: fix live message sent to the chat opened after switching A live message is sent when the chat is switched, but by then this view already shows the chat that was opened - the effect that sends it runs with that chat, so the message typed in one chat was sent to another. The chat the message was composed in is passed to the send, and it is resolved by the chat id from before the switch. If that chat is no longer there the message is not sent at all, rather than sent to the chat opened instead. The draft cleared after sending is the one of that chat too. * plan: correct references; clear the draft of the chat the message is sent to * plan: note the blast radius and how to resolve the overlap with #7308 * android, desktop: only pass the chat to what a live message can reach A live message has no context item, so the forwarding, editing and reporting branches of the send cannot run for it - they keep using the chat of the view, and the chat it was composed in is passed only to the message send, to the update of an already sent live message, and to clearing the draft after sending. * android, desktop: give the opened chat its own compose state while the live message is sent Sending the live message to the chat it was composed in is not enough on its own: composeState is shared between the chats opened in this view, and the chat switch branch of KeyChangeEffect is the only one that neither resets it nor loads the opened chat's draft - the branch that loads a draft is later in the same if chain and cannot be reached. sendMessageAsync then made it visible. It runs on Dispatchers.Default, so its writes land after the switch: the whole composed state (via cs.copy(liveMessage = null)) and its spinner (sending()) were written to the compose state of a view that already shows another chat, which then displayed the text composed in the previous one until the send completed. The draft it should have shown was still in the model, and the next switch away dropped it. - sendMessageAsync takes composed, and sendMessage takes it as null by default, so only the chat switch passes a state and every other sender reads it inside the coroutine, where the send read it before. The chat switch captures it on the main thread before replacing it - otherwise the send would read the compose state of the chat that was opened and send its draft to the previous chat. - checkLinkPreview takes that state too. It re-read composeState rather than what was passed in, and every text live message reaches it through updateMsgContent, so it would have rebuilt the message from the opened chat's draft instead of committing what was composed. - every composeState write in sendMessageAsync is guarded by composeIsForSend() (toChat.id == chat.id), which compares the two chats instead of checking which one is open, so this send never takes the compose state back if that chat is opened again before it completes. - the chat switch branch then resets composeState to the opened chat's draft, or to an empty state, like the branches below it do. * plan: document the compose state handoff; correct the #7308 overlap resolution The note on resolving the overlap with #7308 said its cs.liveMessage != null clause "already covers the send made by the chat switch". It does not - in #7308 that clause sits outside the chatIsOpen check, which is correct only while a live message is always sent to the chat that is open, the assumption this fix removes. Read as written it exempts the chat switch send from the guard that protects the opened chat, and a merge that follows it reintroduces the leak. Also records what manual test 2 was found failing on, and adds a slow send variant so the window between the switch and the send completing is long enough to type in the chat that was opened. * android, desktop: keep reading the current state where a forward appends it checkLinkPreview taking the composed state is needed where a live message reaches it, but the forwarding branch is not one of those - it cannot run with a chat other than the view's - and forwardItem suspends before it. So there the captured state is stale by a network round trip, and text typed while the forward was in flight stopped being appended to the message it adds, while still being cleared when the send completed. * plan: correct references and the claims that no longer hold Line references were against the base this branch forked from, before #7308 landed. Also: the live message loop no longer exits because the send clears liveMessage - the chat switch replaces the compose state, on the main thread, before the send runs; checkLinkPreview is not passed the captured state everywhere; and chatsCtx.getChat can only return null in a secondary context, which is not how "the chat is gone" reads. Adds the two manual checks the review implied: a live message carrying a link preview, which is what breaks if checkLinkPreview stops reading the state it was given, and returning to the chat before the send completes. * android, desktop: narrow the change to what the fix needs - the draft id a failed message is saved under keeps using chat: that branch is behind !liveSend, which the send made by a chat switch never satisfies, so toChat is always chat where it is read; - the state the chat switch installs no longer carries maxFileSize over. That field is kept in sync on chat switch by LaunchedEffect(chat.chatInfo), which is why the branches below this one construct it without one, and the paths where that effect does not re-run are the ones where the send overwrites the state anyway; - sendMessageAsync takes its cs as a parameter rather than aliasing a separately named one. * plan: follow the narrowed change * android, desktop: shorten the comments The threading mechanism behind cs is explained where it is used, so the function comment only has to say what it is; the rest is rewording.
Narasimha-sc(06 Aug 26)
support bot: add crowdfunding announcement to welcome message (#7351)
Evgeny(05 Aug 26)
website: link to wefunder (#7344) Co-authored-by: Evgeny @ SimpleX Chat <[email protected]>
Evgeny(05 Aug 26)
docs: update readme (#7341)
Narasimha-sc(04 Aug 26)
android, desktop: fix draft appearing in another chat when switching chats while sending (#7308) * ios, android, desktop: fix message being sent leaking into another chat Compose state is shared between the chats opened in the same view, and the send is launched in a scope that outlives the chat, so a send that was still in flight when the chat was switched put its message (with the reply context) into the compose state and then the draft of another chat, and a late success cleared whatever was typed in the meantime. The message being sent is no longer kept in the compose state when leaving the chat, and the compose state is only cleared or restored after sending if it still holds the message that was sent - the same check is used by the other senders that show progress in the compose. A message that failed to send is restored in the chat it was composed in, or kept as its draft when another chat is open (iOS has no failed message restore, there the message is dropped as before). * android, desktop: keep only the chat switch fix Revert the iOS changes and the same check in the three senders that connect a prepared chat, leaving the fix for the compose state shared between the chats opened in one view. * plan: document what the narrowed change leaves to the connect senders * android, desktop: use the same check where the sending flag is shared The senders that connect a prepared chat set the same inProgress flag, so a connect completing after the chat was switched cleared it for a send started in the chat opened next, and that sent message was then left in the compose. * android, desktop: keep the live message clauses inside the open chat check live and cs.liveMessage != null were alternatives to chatIsOpen, which holds only while a live message is always sent to the chat that is open. #7323 removes that: the live message committed by a chat switch is sent to the chat it was composed in, while this view already shows another one, so an unguarded clause here clears that chat's compose state - the leak this fix exists to prevent. liveSend stays an alternative to inProgress inside the guard, so a live send behaves exactly as before while its chat is open, and it is excluded from the restore/draft branch, which would otherwise write a draft on every failing keystroke send once that chat is no longer open. On this branch the only behaviour change is a live send completing after its chat was left, which now leaves the opened chat alone. Also load the draft of the chat opened next when the compose state is cleared on switching away from a send in flight: clearState() returns before the branch that loads a draft, so that draft was never shown, and being in the slot but in no compose state it was then dropped by clearPrevDraft on the next chat switch. * plan: explain why live sends are guarded by the open chat check Records that the exemption in "Deliberately unchanged" is from a guard based on inProgress, not from chatIsOpen, and why the earlier form broke once #7323 sends a live message to a chat other than the one open.
Narasimha-sc(04 Aug 26)
android, desktop: keep database passphrase toggle inside the section card (#7326) The "Save passphrase in settings/Keychain" label had no weight, so Row measured it at full available width, the weighted spacer collapsed to 0 and the trailing DefaultSwitch was placed past the row's right edge. Harmless until #6777: the section card is now inset by CARD_PADDING and clipped with SectionCardShape, which cut the row from 348dp to 316dp on the desktop start pane and made the overflowing switch both invisible and unclickable, since Modifier.clip clips pointer input too. With a custom passphrase set the toggle is enabled but unreachable, so the passphrase stays saved in settings and the app never prompts for it on start. Give the label weight(1f) and drop the weighted spacer, matching what SettingsActionItemWithContent does for every other toggle row.
Evgeny Poberezkin(28 Jul 26)
Merge branch 'stable'
SimpleX Chat(28 Jul 26)
7.0: android 366, desktop 155, ios 345
Narasimha-sc(28 Jul 26)
ios, android, desktop: fix draft in support chat appearing in group chat (#7309) Group chat and its support chats have the same chat id, so a draft saved in "chat with admins" was restored in the group chat and shown as its draft in the chat list. Include chat scope in the draft chat id. Also save the draft when support chat is closed without changing chat id - in that case KeyChangeEffect that saves drafts doesn't run.
SimpleX Website
Website
SimpleX Chat: private and secure messenger without any user IDs (not even random)
SimpleX Chat - a private and encrypted messenger without any user IDs (not even random ones)! Make a private connection via link / QR code to send messages and make calls.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address185.199.110.153
- Hostnamecdn-185-199-110-153.github.com
- LocationFrancisco,Indiana,United States of America,NA
- ISPGitHub Inc.
- ASNAS54113
Associated Countries
BE
US
GB
Safety Score
Website marked as safe
100%
Blacklist Check
simplex.chat was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
SimpleX Android App
APK Info
- AppSimpleX
- Creation Date17 May 24
- Last Updated14 Jul 24
- Current Version5.7.3
- Privacy ReportView on Exodus →
De-Googled Compatibility
- GrapheneOSNative3.9 / 4(11)
- LineageOSmicroG4.0 / 4(4)
- CalyxOSmicroG4.0 / 4(3)
- iodeOSmicroG4.0 / 4(2)
Trackers
No trackers found
Permissions
- Access Network State
- Camera
- Foreground Service
- Internet
- Modify Audio Settings
- Post Notifications
- Receive Boot Completed
- Record Audio
- Request Ignore Battery Optimizations
- Use Biometric
- Use Fingerprint
- Use Full Screen Intent
- Vibrate
- Video Capture
- Wake Lock
- Write External Storage
- Dynamic Receiver Not Exported Permission
SimpleX iOS App
App Info
SimpleX Chat: secure messenger
SimpleX - the first messaging network without user identifiers of any kind (not even random numbers) - 100% private by design! Security assessments by Trail of Bits: 2022: https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html 2024: https://simplex.chat/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html SimpleX Chat features: - quantum resistant end-to-end encrypted messages, with editing, replies and deletion. - disappearing messages with opt-out per contact/group. - message reactions. - delivery receipts, with opt-out per contact or group. - multiple chat profiles, with hidden profiles. - app access and self-destruct passcodes. - incognito mode - unique to SimpleX Chat. - end-to-end encrypted images and files. - voice messages up to 5 minutes – also end-to-end encrypted. - "live" messages – they update for all recipients as you type them, every few seconds - unique to SimpleX Chat. - connect via one-time invitation links or via long-term public addresses. - secret chat groups - only group members know the group exists and who is the member. - end-to-end encrypted audio and video calls. - connection security code verification, for contacts and group members – to protect from man-in-the-middle attacks (e.g. invitation link substitution). - end-to-end encrypted push notifications (they contain only encrypted meta-data, not the actual content). - encrypted portable chat database - you can transfer your chat contacts and history to another device. - all local files and media are encrypted by default. - animated images and "stickers" (e.g., from GIF and PNG files and from 3rd party keyboards). SimpleX Chat advantages: - privacy of your identity, profile, contacts and metadata: unlike any other existing messaging platform, SimpleX uses no phone numbers or any other identifiers assigned to the users - not even random numbers. This protects the privacy of who you are communicating with, hiding it from SimpleX platform servers and from any observers. - complete protection against spam and abuse: as you have no identifier on SimpleX platform, you cannot be contacted unless you share a one-time invitation link or an optional temporary user address. - full ownership, control and security of your data: SimpleX stores all user data on client devices, the messages are only held temporarily on SimpleX relay servers until they are received. - decentralized proxied peer-to-peer network: you can use SimpleX Chat via your own relay servers and still communicate with people using pre-configured or any other SimpleX relay servers. - fully open-source code. You can connect to anybody you know via link or scan QR code (in the video call or in person) and start sending messages instantly - no emails, phone numbers or passwords needed. Your profile and contacts are only stored in the app on your device - relay servers do not have access to this information. All messages are end-to-end encrypted using open-source quantum resistant double-ratchet protocol; the messages are delivered via relay servers using open-source SimpleX Messaging Protocol. Please send us any questions via the app (connect to the team via the app settings!), email [email protected] or submit issues on GitHub (https://github.com/simplex-chat/simplex-chat/issues) Ream more about SimpleX Chat at https://simplex.chat Get source code in our GitHub repo: https://github.com/simplex-chat/simplex-chat Follow us on X/Twitter (@SimpleXChat), Reddit (r/SimpleXChat/) and Mastodon (https://mastodon.social/@simplex) for the latest updates.
Rating
Version Info
- Current Version7.0
- Last Updated02 Aug 26
- First Released08 Mar 22
- Minimum iOS Version15.0
- Device Models Supported127
App Details
- IPA Size191.48 Mb
- PriceFree (USD)
- Age Advisory12+
- Supported Languages17
- DeveloperSimpleX Chat Ltd
- Bundle IDchat.simplex.app
Screenshots
SimpleX Reviews
More Encrypted Messaging
Matrix is a decentralized open network for secure communications, with E2E encryption with Olm and Megolm. Along with the Element client, it supports VOIP + video calling and IM + group chats. Note that homeservers can log IP addresses and metadata, and unrelayed 1:1 calls may reveal your IP to the other party.
Probably one of the most popular, secure private messaging apps that combines strong encryption (see Signal Protocol) with a simple UI and plenty of features. It's widely used across the world, and easy-to-use, functioning similar to WhatsApp - with instant messaging, read-receipts, support for media attachments and allows for high-quality voice and video calls. It's cross-platform, open-source and totally free. Signal is recommended by Edward Snowden, and is a perfect solution for most users.
XMPP, also known as Jabber, is an open standard for decentralized messaging that has been widely used for decades. It has actually been the basis upon which WhatsApp, Facebook's Chat and Google's Talk were built, but these companies (eventually) chose to remove the interoperability with other servers. Prominent XMPP clients support OMEMO end-to-end encryption, which is based on the Double Ratchet Algorithm that is used in Signal. For more hands-on information and to register an account you can visit JoinJabber.
About the Data: SimpleX
Change History
Edit SimpleX Data
You can edit SimpleX's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access SimpleX's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/simplexThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share SimpleX
Help your friends compare Encrypted Messaging, and pick privacy-respecting software and services.
Share SimpleX and Awesome Privacy with your network!