Start with the calling environment
A softphone is calling software on a computer or mobile device. A browser webphone uses WebRTC and a server connection designed for that environment. Both still need a suitable PBX or voice service, user identity, authorization, audio devices and a tested inbound route.
Explore desktop clients, mobile clients and browser clients according to where the user actually works. A browser development library should not be mistaken for a hosted phone service.
Research the exact account and edition
Linphone, Bria, MicroSIP, PhonerLite, Zoiper, Acrobits Softphone, Groundwire, Blink, Telephone, Sipnetic, SessionTalk and MizuDroid have different configuration and delivery arrangements. PortSIP ONE is a further distinct case: its current client is documented for PortSIP PBX 22.x rather than as a generic third-party SIP client. Grandstream Wave is likewise a UCM ecosystem client across separate desktop, mobile and web tracks. 3CX apps are another phone-system-bound family whose Windows, mobile, Web Client and PWA paths must not be converted into a generic third-party SIP-account workflow. A feature documented for a vendor account or enterprise edition may not be available to a generic third-party SIP account. Record the app build, licensing edition, operating system, phone system and number that was tested.
Bria's current first-party release notes identify different version tracks: desktop 6.8.8.1 dated September 28, 2026, and iOS and Android 6.23.5 dated August 20, 2026. The desktop patch is scoped to erroneous suspicious-software detection and is not represented as a feature release or instruction to disable security controls. All three pages still warn that stun.counterpath.com will be decommissioned in September 2026, but they do not confirm an exact shutdown time or observed status after that month. The Bria record requires configuration and call-path evidence before replacing a demonstrated dependency.
The comparison above is sourced research rather than a performance ranking. For each deployment test outbound and inbound calls, transfers, microphone selection, reconnection, Wi-Fi to mobile-data changes, and emergency location.
Blink has independent release evidence: Windows 6.0.3, Linux 6.0.6, Blink Pro for Mac 7.1.6 in the App Store and a separate Mac beta 9.4.0 at review. The vendor changelog landing page lagged the App Store's stable Mac version, so preserve the exact product, channel and source instead of selecting the largest family number. Telephone is a macOS-only client whose distributed App Store 1.6 release from June 2022 remains separate from the current repository instructions for source-building Opus, LibreSSL and PJSIP with a macOS 15.6 minimum target. Repository activity and a newer build target are not a newer distributed version or support commitment. Sipnetic is an Android-only research record; its developer lists TLS, SRTP and ZRTP controls but does not document a push relay or guarantee locked-screen delivery. SessionTalk is a generic iOS and Android SIP client whose optional push path inserts a vendor registration and signaling proxy; keep it distinct from SessionCloud, white-label and desktop products. MizuDroid is Android-only and can use server-native push, a Mizutech SIP-push gateway or a background service; preserve the selected path and edition rather than treating them as interchangeable.
Baresip is a modular core with platform-specific packaging and interfaces. Compare the exact artifact and loaded modules rather than treating every wrapper or repository feature as one finished, centrally managed client.
Sangoma Phone is a licensed, PBX-bound family for supported Sangoma systems rather than a generic SIP-account client. Its installed desktop and browser paths share PBX identity but retain different packaging, permission and runtime boundaries; FreePBX/PBXact readiness also depends on PJSIP extensions, Sangoma modules, service access and feature-specific licensing.
Jitsi Desktop is a distinct legacy SIP and XMPP client, not Jitsi Meet. Its project says active development has ended and packages now depend on community contributions, so preserve the exact channel, runtime and maintenance evidence and plan migration rather than treating a download as current platform support.
Keep control of provisioning and secrets
Determine where credentials are stored, who issues a configuration link, how access is revoked and whether a push service handles account registration in the background. Use trusted configuration delivery and the PBX’s minimum necessary calling permissions.
An encrypted signaling setting does not establish encrypted media. Verify transport and negotiated media independently, with a failure test when encryption is required. A TURN relay changes the media path but does not prove encryption.
Groundwire and Acrobits Softphone document the push boundary directly: in push mode SIPIS registers the account, while Standard registration keeps it on the device. A private PBX reachable only through a VPN may require Standard mode. Their iOS CallKit behavior and device-variable Android integration are separate from registration and push delivery; test audio focus, interruptions and locked-screen arrival on the exact handset.
Acrobits Softphone and Groundwire share a vendor and push architecture but not the same product scope. Use the Acrobits Softphone guide for the basic retail client rather than transferring Groundwire or Cloud Softphone capabilities.
PhonerLite adds a local .plp profile path for Windows. Because that file can carry a password or a stored credential value, treat it as secret delivery rather than a harmless preference file.
Make a bounded pilot repeatable
Give every test a timestamp, client version, server identity and expected result. Check first launch, signed-out state, sleep, reboot and connectivity changes. Keep a desk or mobile fallback for critical calls. Use provider-approved emergency testing rather than placing a live emergency call as a casual check.
Treat Acrobits iOS Web Access as a temporary data-export surface
The refreshed Acrobits Softphone and Groundwire guides now bound the optional iOS Web Access listener. The first-party procedure exposes call history and recorded-call downloads to a browser on the same Wi-Fi network while the application is open, and documents admin and 1234 as the defaults. Replace that default before an authorized export, limit the activation window and verify the listener is disabled afterward.
Treat JsSIP as an application component
JsSIP is a JavaScript SIP library, not a turnkey phone or hosted account. Its WSS connection, SIP identity, registration, browser permission, WebRTC negotiation, remote-media rendering, page lifecycle and package provenance need separate ownership and evidence.
Keep Baresip 4.12.0 and libre 4.12.0 in one runtime record
Baresip 4.12.0 and libre 4.12.0 were released September 30, 2026. The libre release carries a security notice, while the Baresip release adds outbound custom X- headers and audio-path fixes. Record the selected core, loaded library, package provenance, modules and operating-system target together; application version alone does not prove the library fix or authorize a custom signaling field.
Keep Linphone desktop stable archives separate from mobile stores
The Linphone guide was rechecked against the first-party stable archives on October 7, 2026. Windows, macOS and GNU/Linux each remained at desktop 6.2.3 dated September 22. Record the exact executable, disk image or AppImage and retrieval date; do not copy that desktop version into iOS, Android, daily-snapshot, SDK or server records.
Keep Jitsi Desktop in the comparison as a community-maintained legacy client
The Jitsi Desktop record now appears in the structured softphone comparison. Its release archive still marks 2.8.5426 as Latest and the higher-numbered 2.11.5633 as Pre-release; its community maintenance and package channels remain deployment constraints rather than current-platform support promises.
Update MicroSIP only after the primary channel changes
The MicroSIP record now reflects 3.22.18 on the publisher’s primary download table as checked October 7, 2026. Regular and Lite editions, installer and portable formats, cached catalogue state and the installed executable remain separate evidence; the release notes do not establish PBX, headset, driver or protected-call compatibility.
Keep Grandstream Wave 1.35 platform and server gates visible
The refreshed Grandstream Wave record separates Desktop 1.35.6, Web 1.0.35.7, Android 1.0.35.7 and iOS 1.35.7, all dated September 21, 2026. UCM firmware, identity-provider configuration, permissions and integration state remain separate from client installation; beta AI, remote control and WhatsApp calling are not represented as generic SIP-client features.
Preserve the SIP.js release and security-policy conflict
The refreshed SIP.js record keeps the repository's 0.21.2 Latest label separate from its security-policy table, which names 0.19.x as supported but does not state the status of 0.20.x or 0.21.x. It also distinguishes SimpleUser, SessionManager and the full API, and treats Android browser compatibility as a foreground statement rather than proof of push or background reachability.
Separate Zoiper's hosted and on-device transcript paths
The refreshed Zoiper record keeps the built-in hosted Banafo integration separate from the Zoiper Scribe desktop application. Scribe works from completed recording files and says transcription runs locally; it does not register a SIP account, join a call or create the recording. Zoiper 5 edition, recording entitlement, Scribe edition, local storage, optional hosted processing, exports, consent and retention therefore remain separate acceptance facts.
Keep Cloud Softphone separate from the retail Acrobits apps
Acrobits Cloud Softphone is a managed generic and white-label platform whose portal, Cloud ID, external Account XML, release state and SIPIS path need their own evidence. Use the stale-provisioning diagnostic when one delivered value is wrong; do not transfer those controls to retail Acrobits Softphone or Groundwire.
Separate MizuDroid's public and customer release tracks
MizuDroid now has an explicit channel boundary: Mizutech labels 4.6 a June 2026 APK or custom-build release and says it will not refresh the public Play demo with that branch. Preserve the exact installed package and build, then identify provider push, the Mizutech gateway or background service before comparing locked-screen behavior.
Keep Linphone XML delivery separate from runtime acceptance
The Linphone provisioning diagnostic follows one wrong value from provisioning link or QR-carried URL through the next application start, XML response, overwrite policy and transient behavior. Registration and a completed call remain later acceptance stages.
Browser call alerting is a chain, not a ringtone
The browser no-ring diagnostic separates WSS and registration, INVITE delivery, visible incoming-call state, browser playback policy, user activation, answer and remote conversation audio.
Trace MicroSIP from active account to rendered audio
The refreshed MicroSIP guide separates its one active SIP account from saved accounts and Local Account, then keeps dial-plan transformation, Call Manager, public-address helpers, negotiated media and Windows devices distinct. Use the MicroSIP call diagnostic when registration succeeds but a call or audio does not.
Trace Acrobits device lifecycle before deleting contacts
The wrong-or-removed-device diagnostic separates Groundwire and Acrobits Softphone account identity, Standard versus Push registration, SIPIS token cleanup and the PBX contact set.
Keep Sangoma Phone login evidence in its PBX service chain
The Sangoma Phone login diagnostic follows one desktop or browser attempt through PBX readiness, user authorization, RTAPI and protected-session boundaries before registration or calls.
Trace Baresip as a modular runtime rather than one fixed app
Use the Baresip registration and audio diagnostic to separate package, core and libre versions, module availability, loaded account state, registrar exchange and workstation audio.
Do not turn a softphone encryption setting into a call claim
The Linphone media-encryption guide demonstrates the broader evidence rule: capability, selected policy, mandatory behavior, offer and answer, effective call protection and peer authentication are separate. Its diagnostic preserves a failed required-policy call instead of hiding it through downgrade.
Treat softphone NAT traversal as a media-path decision
The Linphone NAT traversal guide demonstrates a reusable boundary: a configured STUN or TURN server is not the same as gathered candidates, a selected ICE pair or working audio. Its diagnostic preserves each stage instead of replacing servers at random.
Use Linphone to trace every mobile push owner
The Linphone push guide applies a reusable rule: a softphone can support push while an account, registrar, proxy, platform delivery or app lifecycle state still does not. Its diagnostic preserves those owners instead of treating background ringing as one switch.
Include reject semantics in softphone acceptance tests
A visible Decline or Busy control can create different SIP responses and different results for parallel devices or voicemail. The Blink inbound-disposition diagnostic demonstrates how to test the UI action, branch behavior and final route separately.
Keep SessionTalk push mode and PBX contact behavior aligned
SessionTalk documents materially different registration ownership across Multiple Registrations, Synchronous, Single Register and SessionCloud Continuous settings. The focused diagnostic tests the effective mode against PBX contacts instead of treating push as one device toggle.
Keep the VoIPstudio client inside its service boundary
The VoIPstudio Desktop guide covers a service-specific Windows, macOS and Linux client whose web-account login, endpoint row, audio selections and network tests remain separate. Use the paired diagnostic without treating an online icon as call or media proof.
Treat Webex App as four possible calling services
The Webex App calling guide keeps Call on Webex, Unified CM, Webex Calling and hosted service-provider calling distinct before comparing features or call evidence.
Date the MicroSIP package claim
MicroSIP’s current pointer and primary download table listed 3.22.19 on October 17, 2026. Keep regular versus Lite, installer versus portable, displayed catalogue version and installed executable separate; release notes do not establish PBX, driver or protected-call compatibility.
Keep PhonerLite package and local-data ownership separate
PhonerLite 3.46 can load configuration beside a writable executable or from %APPDATA%. The diagnostic identifies the active files before restoring credentials or history.
Treat Linphone file paths as version-scoped evidence
Linphone’s documented desktop storage tree is based on 4.2 while the stable Windows archive lists 6.2.3. The local-data guide shows how to verify the running build before restoring state.
Keep Blink registration errors tied to one platform build
The Blink registration diagnostic records the product track, DNS or proxy path, response and retry timing before changing the account.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Linphone supported platforms ↗
- Linphone remote provisioning ↗
- Linphone account and notification FAQ ↗
- Linphone stable Windows application archive ↗
- Linphone stable macOS application archive ↗
- Linphone stable Linux application archive ↗
- Bria softphone clients ↗
- Bria provisioning ↗
- Bria Push Service on mobile ↗
- Bria current desktop release notes ↗
- Bria current iOS release notes ↗
- Bria current Android release notes ↗
- SIP.js project and purpose ↗
- SIP.js Simple User guide ↗
- MDN MediaDevices getUserMedia ↗
- Zoiper current desktop and mobile downloads ↗
- Zoiper 5 edition feature matrix ↗
- Zoiper 5 provisioning entry point ↗
- Zoiper 5 configuration-file documentation ↗
- Zoiper Push Proxy credential boundary ↗
- Zoiper Scribe on-device transcription overview ↗
- Zoiper 5 recording and Scribe workflow ↗
- Groundwire system requirements ↗
- Groundwire security settings ↗
- Acrobits push requirements for a PBX ↗
- Sipnetic developer site ↗
- Sipnetic Google Play listing ↗
- Telephone product page ↗
- Telephone App Store listing ↗
- SessionTalk mobile softphone setup ↗
- SessionTalk push-notification architecture ↗
- Baresip project repository and feature list ↗
- Baresip supported platforms and package paths ↗
- Baresip account-file documentation ↗
- Baresip module catalogue ↗
- MizuDroid Google Play listing ↗
- MizuDroid Android softphone guide ↗
- MizuDroid push-notification architecture ↗
- Acrobits Softphone and Groundwire differences ↗
- Acrobits iOS Web Access for history and recording export ↗
- Sangoma desktop client installation and login ↗
- Sangoma FreePBX and PBXact desktop app administration guide ↗
- FreePBX browser-based Sangoma Phone announcement ↗
- Sangoma Phone web-app documentation ↗
- Sangoma desktop client current release pointer ↗
- Jitsi Desktop project repository ↗
- Jitsi Desktop release archive ↗
- Jitsi Desktop legacy download page ↗
- Jitsi Desktop Windows setup guide ↗
- Jitsi Desktop registrarless SIP guide ↗
- Jitsi user FAQ ↗
- JsSIP project site ↗
- JsSIP architecture overview ↗
- JsSIP documentation index ↗
- JsSIP 3.10 getting-started guide ↗
- JsSIP 3.8 user-agent configuration reference ↗
- JsSIP project repository ↗
- JsSIP repository changelog ↗
- JsSIP npm package ↗
- Telephone FAQ and diagnostic logging ↗
- 64 Characters privacy policy ↗
- Telephone 1.6 Apple Silicon release note ↗
- Telephone source repository and build instructions ↗
- Baresip 4.12.0 release ↗
- Libre 4.12.0 release and security notice ↗
- Baresip stable source-install guide ↗
- MicroSIP current downloads and changelog ↗
- MicroSIP current-version pointer ↗
- Grandstream Wave release index ↗
- Wave Desktop 1.35.6 release notes ↗
- Wave Web 1.0.35.7 release notes ↗
- Wave Android 1.0.35.7 and iOS 1.35.7 release notes ↗
- SIP.js release archive ↗
- SIP.js published security policy ↗
- SIP.js 0.20 to 0.21 migration guide ↗
- SIP.js project repository and API scope ↗
- SIP.js mobile guide ↗
- Acrobits Cloud Softphone provisioning introduction ↗
- Acrobits provisioning input parameters and Live/Editable versions ↗
- Acrobits external provisioning workflow ↗
- Acrobits Cloud Softphone Account XML reference ↗
- Acrobits Cloud Softphone command URIs ↗
- Acrobits SIP Instance Server architecture ↗
- Acrobits published-app configuration changes ↗
- Acrobits external-provisioning domain boundary ↗
- Mizutech Android softphone release-channel record ↗
- MizuDroid Android background-availability modes ↗
- Mizutech MizuDroid APK download index ↗
- Linphone QR-code and provisioning-link login ↗
- Linphone third-party SIP account login ↗
- SIP.js receive-a-call guide ↗
- SIP.js user-agent and registration guide ↗
- SIP.js remote-media attachment guide ↗
- MDN HTMLMediaElement play method ↗
- MDN autoplay guide for media and Web Audio ↗
- MDN AudioContext resume method ↗
- MDN document visibility state ↗
- Chrome autoplay policy ↗
- WebKit media autoplay policy ↗
- MicroSIP project and platform scope ↗
- MicroSIP account, call and network settings ↗
- Acrobits SIPIS incoming-call handling ↗
- Acrobits SIPIS push-status indication ↗
- Acrobits SIPIS instance cleanup ↗
- Acrobits push-notification architecture ↗
- Acrobits incoming-call modes ↗
- Acrobits push versus Standard registration ↗
- Groundwire incoming-call settings ↗
- Sangoma Phone web app for FreePBX and PBXact ↗
- Sangoma softphone troubleshooting tips ↗
- Sangoma PBX platform port reference ↗
- Sangoma Phone external connection requirements ↗
- Sangoma Phone PBX setup guide ↗
- Sangoma desktop softphone release record ↗
- Baresip configuration reference ↗
- Linphone softphone security architecture ↗
- Liblinphone 5.5 media parameters ↗
- Liblinphone 5.5 call control ↗
- Liblinphone provisioning configuration keys ↗
- RFC 3711 Secure RTP ↗
- RFC 6189 ZRTP ↗
- Liblinphone latest NatPolicy API ↗
- Liblinphone 5.5 network parameters ↗
- Linphone ICE feature guide ↗
- RFC 8445: Interactive Connectivity Establishment ↗
- RFC 8489: Session Traversal Utilities for NAT ↗
- RFC 8656: Traversal Using Relays around NAT ↗
- RFC 8839: SDP offer-answer procedures for ICE ↗
- Linphone Flexisip push-notification specification ↗
- Liblinphone 5.4 AccountParams push controls ↗
- Liblinphone 5.4 PushNotificationConfig ↗
- Liblinphone 5.4 Core push processing ↗
- RFC 8599: Push Notification with SIP ↗
- Blink incoming-call alert choices ↗
- Blink SIP accounts and registration state ↗
- Blink main interface and outbound account selection ↗
- Blink audio-call controls and preferences ↗
- Blink platform-specific changelog ↗
- RFC 3261 SIP response and proxy-branch behavior ↗
- SessionTalk push registration modes ↗
- SessionTalk multiple-registrations push mode ↗
- SessionTalk synchronous push registration ↗
- SessionTalk single-register push mode ↗
- SessionTalk incoming push-call sequence ↗
- SessionTalk incoming push-call troubleshooting ↗
- SessionCloud SIP and push settings ↗
- VoIPstudio desktop and mobile downloads ↗
- VoIPstudio Desktop Softphone manual ↗
- VoIPstudio user-manual introduction and platform requirements ↗
- VoIPstudio user, endpoint, SIP Test and MTR administration ↗
- VoIPstudio network, media, encryption and SIP ALG guidance ↗
- Supported calling options in Webex App ↗
- Webex App: find out what calling service you have ↗
- Webex App system requirements and support policy ↗
- Download the Webex desktop and mobile apps ↗
- Webex App: change your audio settings ↗
- Webex App: test your connection with the Health Checker ↗
- Webex App: troubleshoot connection issues with the Diagnostics tool ↗
- Webex App: error messages for Calling ↗
- Advanced diagnostics and troubleshooting in Control Hub ↗
- MicroSIP troubleshooting ↗
- MicroSIP frequently asked questions ↗
- PhonerLite downloads and release history ↗
- PhonerLite profiles, SIP settings and configuration-file locations ↗
- PhonerLite PLP provisioning profiles ↗
- PhonerLite sound devices, active calls and recordings ↗
- PhonerLite logbook and recorded-call linkage ↗
- Linphone Desktop application files tree ↗
- Linphone Desktop linphonerc configuration reference ↗
- Linphone troubleshooting and support-log collection ↗
- Blink product overview ↗
- Blink Help Center ↗
- Blink problem solving on Linux and Windows ↗
- Blink problem solving on Mac ↗
- Blink platform downloads ↗
- RFC 3263 SIP server discovery ↗
- RFC 5626 registration flow recovery and Retry-After ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.