All notable changes to rtcStats are documented here, most recent first. This project follows Keep a Changelog and Semantic Versioning.
Tags, reused across releases:
API: the public REST + MCP APIEngine: the analysis engine, observations, deductions and the experience scoreAI: all work around AIDashboard: the dashboard and session viewerWeb Site: the public website (landing, pricing, showcase, blog)KB: the knowledge baseSecurity: security fixes and hardeningChore: user-visible platform changes (performance, domains, infrastructure)
[1.10.0] - September, 7th 2026
Added
- [Engine]: Introduce Deductions, automatic root-cause analysis that explains the likely reason behind a call's connectivity or audio problems.
- [Engine]: Add 11 new observations covering connectivity and audio issues.
- [Web Site]: Add a
/comparesection comparing rtcStats to the alternatives: webrtc-internals, watchRTC, callstats.io, ObserveRTC, and building it yourself. - [Web Site]: Add a
/trustTrust center gathering the security, privacy, compliance, availability and API lifecycle answers a security review asks for, and a/compliancepage covering the data held, its location, its retention, the sub-processors involved, and which certifications rtcStats does and does not have. - [Dashboard]: Show the last packet sent and last packet received times for each ICE candidate pair in the Connections panel.
- [API]: Add per-account rate limits on the public API and MCP tools: over the limit, REST returns
429withRetry-Afterand MCP tool calls return a tool error, and every response emitted after the rate check carriesX-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset. - [API]: Complete the OpenAPI spec (every
errorCodevalue with its meaning and an example, the code returned by each error response, the403and429responses, the rate-limit headers) and add an agent quickstart tollms.txt, so a client can branch on the code rather than on the message. - [KB]: Add an IT specifications and requirements page for the open source
rtcstats-server, for infrastructure and security reviews.
Changed
- [API][Breaking Changes]: Group deductions by issue in the API and MCP response (one entry per issue holding its ranked causes) instead of one flat entry per cause, and drop the
title,polarityandsourcefields from each deduction. - [API]: Shorten the deprecation notice window to 6 months for a version and 3 months for an individual endpoint or field, and add the release blog post and changelog
[Breaking Changes]tag as additional deprecation-signalling channels. - [Engine]: Broaden an existing connectivity observation to also flag ICE restarts and re-offers made right after a call connects.
- [AI]: Leave unused peer connections and streams out of the AI summary input, for a more focused summary.
- [Dashboard]: Redesign the dashboard sessions table and session-viewer tabs for higher information density and a better fit on laptop screens, remove the redundant Connections "Error type" row now covered by observations, and move the Quick start checklist into the sidebar.
- [KB]: Redesign article pages with a persistent section rail, table of contents, last-updated dates, and a "start here" section on the knowledge base home.
- [Security]: Require an explicit confirmation click for sign-up instead of an email link that opens automatically (closing an automated-scanner bypass), and extend CAPTCHA protection to sign-in, password reset, and invite acceptance.
- [Dashboard]: Redesign the Streams, Pairs and Channels charts for long calls, which run from ten minutes to several hours: a multi-hour session now reads as clearly as a short one, each metric shows its range around a thinner mean line rather than a solid block of points, and dragging across the time axis zooms into a window at full detail.
- [Dashboard]: Simplify the Streams, Pairs and Channels chart tooltips and give each unit its own decimal precision.
- [Dashboard]: Relabel the Connections Pair Information traffic rows as Bitrate (Outgoing) and Bitrate (Incoming).
- [KB]: Rewrite the
rtcstats-serverrequirements and operations guide around a before-production checklist and a production readiness path. - [Web Site]: Reorganize the footer into Product, Resources and Company columns, and surface the Compare page and the Trust center from the header, footer, pricing and open source pages.
Fixed
- [API]: Fix an unexpected failure of
GET /v1.0/sessions/{rtcstatsId}returning an HTML error page instead of the documented{ error, errorCode }body withother_issue. - [API]: Fix an oversized or malformed
multipart/form-datachunk on/v1.0/upload,/v1.0/analyzeand/v1.0/enrichreturning an empty500instead of a documented error: a chunk above the 10 MB request body limit now returns413file_too_large, and an unparsable one400invalid_request. - [API]: Fix an empty or malformed JSON assemble body on
/v1.0/uploadreturning an empty500instead of400invalid_request. - [Security]: Stop
DELETE /v1.0/sessions/{rtcstatsId}returning the raw database error text in its500body; it now returns a fixed generic message like every other route, with the real cause logged server-side only. - [Engine]: Fix streams that stall right after capture starts being misreported, and stop already-flagged stalled streams from producing extra, noisy observations.
- [Engine]: Fix connection-failure observations not firing when a call's ICE connects but negotiation never fully completes.
- [Engine]: Fix the experience score showing a low, misleading value instead of unavailable for sessions that never made a real call, and fix the connectivity score being skipped or computed incorrectly when a session's timestamps were invalid.
- [Engine]: Fix the call date missing on sessions where no peer connection produced statistics.
- [Dashboard]: Fix inbound media byte counts not being recorded for received streams.
- [Dashboard]: Fix Highcharts failing to render on the session-viewer Overview page after visiting Settings then Billing, or an admin chart, earlier in the session.
- [Dashboard]: Fix layout glitches in the sessions table (Title column collapsing) and the Logs tab (a stray double separator).
- [Dashboard]: Fix the Logs tab crashing when expanding an SDP event whose audio or video section carried no resolvable codec, as happens with sections rejected during a renegotiation.
- [Dashboard]: Fix the Logs tab scrolling slowly on sessions with many events.
- [Dashboard]: Fix candidate-pair charts and observation badges resolving to the wrong peer connection when two peer connections reused the same pair ID.
- [KB]: Fix broken links across the knowledge base.
- [Chore]: Fix web site, knowledge base, and blog pages being needlessly slow by making them cacheable at the edge instead of re-rendering on every request.
[1.9.2] - August, 30th 2026
Changed
- [SECURITY]: Extend Turnstile/CAPTCHA protection to
/signin(password and magic link),/lost-password, and/accept-invite, matching the coverage already enforced on/register.
[1.9.1] - August, 27th 2026
Changed
- [SECURITY]: Require an explicit
POSTfrom a "Confirm sign up" click instead of the emailed link'sGETcompleting signup, closing a bypass where automated email-security scanners could confirm accounts without the owner's action; add Cloudflare Turnstile groundwork to/register.
[1.9.0] - August, 3rd 2026
Added
- [Engine]: Add 7 new observations covering network and connectivity issues.
- [Dashboard]: Show custom application trace events from
rtcstats-jsin the Logs tab. - [API]: Accept the same chunked upload protocol used by
/uploadonPOST /analyze, so large dumps can be analyzed too. - [API]: Add
POST /v1.0/enrich, a lightweight endpoint returning scores and observations only, metered like/analyze.
Changed
- [Dashboard]: Render the session viewer as soon as the summary responds, loading devices, timeline, and logs in the background.
- [Web Site]: Retheme the site to the Signal Blue brand color and polish the landing page (hero motion, CTA accessibility, contrast).
- [KB]: Reorganize the knowledge base home page into tiers with a promoted category trio and a metrics reference band.
- [Dashboard]: Redesign the session-viewer cards (CPU, Buffering, Latency, Connectivity, Microphone, Speaker, Webcam, Video) with downsampled sparklines, threshold zones, and a unified color system.
- [API][Breaking Changes]: Stop returning internal
schemaVersion,analysisVersion,observationsVersion, andyoutube_urlfrom session responses, and expose the processor version asprocessorVersioninstead. - [API][Breaking Changes]: Rename the
durationfield todurationInSecondsin sustained-loss and connectivity-loss indicators, and round numeric values across session responses (timestamps to whole milliseconds, others to at most 2 decimals). - [Security]: Harden the upload chunk store against prototype-pollution and cross-account key collisions.
Fixed
- [Dashboard]: Fix the sessions table Date and Imported-at columns not sorting correctly.
- [API]: Apply the account's MOS computation settings on
POST /v1.0/analyzeeven without?save=true. - [Engine]: Fix phantom MOS scores being computed on streams with no media.
- [Dashboard]: Fix
addTrack/ontrackevent details rendering as raw objects instead of a readable summary in the Logs tab. - [Dashboard]: Fix TURN TCP/TLS detection being applied outside relay candidate pairs.
- [Dashboard]: Fix a Highcharts crash (
missingModuleFor: arearange) on session-viewer charts and dashboard stat cards. - [Dashboard]: Apply the brand color consistently on light-theme pages (sign-in, register, password reset, invite).
[1.8.0] - July, 13th 2026
Added
- [Dashboard]: Add dark and light themes with a toggle, persisted per user.
Changed
- [Dashboard]: Redesign the Overview stat cards (Audio/Video In/Out) with a min-to-max range track and hover detail, tiered Jitter/RTT units, and aligned call-start timelines across Streams, Data channels, and sessions list stat cards.
- [API][Breaking Changes]: Rename every
aggregatedStatskey to a<metric>_<scope>_<agg>_<unit>shape (e.g.rtt_out_audio_avg_ms) and add P5, P95, and standard-deviation variants; the former unitless keys are removed. - [Chore]: Make
rtcstats.comthe primary domain;www.rtcstats.comnow redirects to it.
Fixed
- [API]: Fix
POST /upload,/analyze, and the dashboard upload returning500instead of415when the uploaded file can't be parsed. - [Dashboard]: Fix downloading a session whose file is missing from storage returning
500instead of404. - [Engine]: Fix MOS not dropping to 0 when round-trip time reaches 15 seconds or more.
- [Engine]: Fix an audio-delivery observation's percentage being computed over the wrong sample set.
[1.7.0] - June 22th, 2026
Added
- [Web Site]: Add a
/supportpage, a homepage "What's new" section, and a dedicated/integrations/mcphub page. - [API]: Serve the public API from a dedicated
api.rtcstats.comhost, and addGET /v1.0/observations, a catalog of every observation type with its severity and tags. - [Dashboard]: Add a Quick start checklist to the dashboard, and show available bandwidth and traffic for each ICE candidate pair in the Connections panel.
Changed
- [Dashboard]: Reorganize session-viewer tabs (Overview, Timeline, Session, Content, Client, Logs) and regroup widgets accordingly.
- [API]: Add per-type identifiers (
ssrcId,labelId,sid) to the observationsource; the top-levellabelis deprecated. - [API][Breaking Changes]: Rename the observation
flagfield totype, and theobservations/observationFlagsfilters toobservationTypes.
Fixed
- [Engine]: Fix per-second rate and per-frame metrics assuming a fixed 1-second polling interval, throwing off values on sessions polled at a different rate.
- [Dashboard]: Fix the connectivity score not displaying for peer connections that never negotiated or connected.
- [Web Site]: Fix the header Resources dropdown rendering behind page content.
[1.6.0] - June, 1st 2026
Added
- [Dashboard]: Show session geolocation and an IPv4/IPv6 indicator on Overview and Connectivity, and add a Security section (TLS version, DTLS direction, ciphers) to the Peer Connection pane.
- [Engine]: Add 2 new observations covering configuration issues.
- [API]: Accept richer filters on
GET /v1.0/sessionsand MCPlist_sessions(name, tags, browser version, conference/session ID, severity and score thresholds), plus a denormalizedabstractsummary on each session; also serve a Markdown API reference at/api-docs.md. - [Dashboard]: Add summary stat cards, a Score column, and OS/Client filters to the dashboard sessions table.
- [Dashboard]: Add a dashboard "Client" screen with a media timeline of call phases, device acquisitions, and observations.
Changed
- [Dashboard]: Replace the Overview Areas tag strip with a treemap, and let logged-in users browse the homepage and other static pages.
- [Engine]: Fire performance-limiting observations based on absolute duration too, not only their share of the call.
- [Dashboard]: Simplify the free-plan sessions page to a single "needs attention" total with a paid-plan lock badge instead of per-session scores.
Fixed
- [Dashboard]: Fix audio levels going wrong when an outbound stream changes its media source mid-session.
- [Dashboard]: Fix STUN/TURN entries not rendering in the Connectivity table when an ICE server's
urlswas a single string instead of an array. - [Engine]: Fix a connectivity observation firing even though the selected ICE pair already used UDP.
- [Dashboard]: Fix corrupt log timestamps producing a negative call duration, and surface the real parsing error instead of a generic "Parsing issue" message.
- [Security]: Block non-admin users from fetching another account's session summary or dump.
- [Web Site]: Fix the header showing the account name instead of the signed-in user's display name, and return users to the page they requested after sign-in instead of the dashboard.
[1.5.0] - May 1st, 2026
Added
- [Dashboard]: Show geolocation for TURN/STUN candidates and pairs, and log device changes, track endings, and
getUserMediaerrors. - [Engine]: Add new observations covering audio and device issues.
- [Dashboard]: Let users leave feedback on a session, with email notifications.
- [KB]: Render Mermaid diagrams in articles.
- [Web Site]: Add an Open Source page and a Resources navigation menu.
Changed
- [API][Breaking Changes]: Rename
sessionIdtortcstatsIdandembed_urltoembedUrl(Enterprise only) everywhere on the public API and MCP; addrtcstatsUrland, on/quota,accountName/accountPlan; omit rather than null these fields when not applicable. - [Security]: Harden against header injection from client-supplied identity headers, stop logging
Authorizationvalues in plaintext, and add CSP/X-Frame-Optionsheaders on non-embed routes.
Fixed
- [Engine]: Fix simulcast-related observations counting more than once per peer connection.
[1.4.0] - April 20th, 2026
Added
- [Dashboard]: Add an embeddable viewer; Enterprise accounts can expose sessions in an iframe with a domain allowlist.
- [API]: Add session list/get/delete and quota endpoints, and turn the MCP endpoint into a full MCP server.
- [Engine]: Add 5 new observations covering network and video issues.
- [KB]: Add FAQ, how-to, privacy/compliance, and embeddable-viewer articles.
Changed
- [Dashboard]: Rework the free and trial plans (limits, counters, upgrade prompts) around a startup/developer trial flow.
- [Web Site]: Add more showcase examples and refresh pricing, homepage, and onboarding copy.
Fixed
- [Dashboard]: Fix stray chart lines, wrong per-stream timestamp references, and an "Excellent" MOS badge showing when MOS could not be computed.
- [Engine]: Remove an audio-processing observation that proved unreliable on Linux.
- [Dashboard]: Fix password recovery, an unintended logout of every session on password change, the Settings tab resetting on refresh, and incomplete cleanup on account deletion.
- [Security]: Stop sessions from being exposed through the embeddable viewer when the feature is disabled or the request comes from an untrusted domain.
[1.3.0] - March 27th, 2026
Added
- [Dashboard]: Add the Experience Score (a composite per-session score) and a Connectivity score with a visual connection timeline.
- [Engine]: Add a user-selectable MOS algorithm, an improved Opus-oriented and video MOS, a tag cloud, and new observations covering connectivity issues.
- [Dashboard]: Show peer role, content type, and simulcast/SVC indicators in the Streams table, and add outgoing webhooks configurable from account Settings.
- [Web Site]: Add more public showcase sessions and videos.
Fixed
- [Engine]: Fix ICE-server detection when multiple servers share one URL entry, and improve relay-only protocol inference.
- [Engine]: Fix MOS computation regressions and candidate-pair RTT/STUN handling when values were missing.
[1.2.0] - March 9th, 2026
Added
- [API]: Launch the public API (
/upload,/analyze,/mcp) with an OpenAPI spec and documentation page. - [Dashboard]: Add application tokens (Settings, Applications) to authenticate API requests.
- [Engine]: Add new observations covering performance and video issues.
- [Dashboard]: Show rtcstats client, user, conference, and session metadata in Session Details, and add tags and descriptions to sessions.
- [KB]: Add full-text search and a redesigned knowledge base.
- [AI]: Support newer Anthropic models for AI summary generation.
Fixed
- [Engine]: Fix a missing duration on an audio observation and a null framerate value.
- [Dashboard]: Fix handover timestamps, double scrollbars, and sessions table pagination and height issues when filtering.
- [KB]: Fix article content and search inside the article popup.
[1.1.1] - February 26th, 2026
Added
- [Web Site]: Add 6 new showcase sessions and videos.
[1.1.0] - February 16th, 2026
Added
- [Dashboard]: Give new accounts 5 gold credits to try Observations and AI summary.
- [Engine]: Add 5 new observations covering connectivity and security issues.
- [Dashboard]: Show time-to-first-candidate connection metrics, support moving a dump between accounts, show an error for AEC-only uploads, and add a YouTube banner on public shares.
- [Web Site]: Add a showcase page featuring the first publicly shared sessions and videos.
Changed
- [Web Site]: Refresh pricing to introduce gold credits and rtcstats-format support on the free plan.
Fixed
- [Dashboard]: Fix some rtcstats event logs not displaying, or displaying incorrectly.
[1.00] - January 25th, 2026
Added
- [AI]: Add automatic, background AI call-summary generation.
- [Engine]: Add 6 new observations covering device, audio, and connectivity issues.
- [Dashboard]: Detect and surface the media server or stack in use (Pion, PJSIP, Pixel Streaming, ICE-Lite) in Session Details.
Changed
- [Dashboard]: Skip AI summary generation on free accounts.
Fixed
- [Engine]: Fix RTT/MOS handling of null values and inconsistent RTT aggregation.
- [Dashboard]: Fix incorrect upload/email error messages and the password-recovery redirect, and crashes triggered by missing user-agent data or missing peer connections.
[0.13.2] - January 16th, 2025
Fixed
- [Dashboard]: Fix a crash when parsing rtcStats files.
[0.13.1] - January 13th, 2025
Fixed
- [Dashboard]: Fix a crash parsing rtcStats files generated from Safari.
[0.13.0] - January 12th, 2025
Added
- [Engine]: Add 9 new observations covering video and performance issues.
- [Dashboard]: Group local candidates and show network interface info in Peer Connections, and add video resolution/framerate, encoder/decoder (including hardware acceleration), and scalability-mode/RID details.
- [Dashboard]: Detect and surface additional media servers (Asterisk, Janus, MediaSoup, OpenAI, Jambonz, MediaMTX), and send an email notification when an upload fails.
- [Web Site]: Add full responsive design for tablet and mobile.
Fixed
- [Dashboard]: Fix several crashes (observations processing, public sharing, MIME-type parsing), and improve packet-loss and unused-stream detection accuracy.
[0.12.1] - December 17th, 2025
Fixed
- [Engine]: Fix a network observation misclassifying streams with an unrecognized codec type.
[0.12.0] - December 08th, 2025
Added
- [Dashboard]: Add public sharing: make any session viewable via a link, no account required.
- [Engine]: Add new observations covering network quality for all streams.
- [KB]: Overhaul the knowledge base with articles for every statistic and observation, and a clearer layout.
Fixed
- [Dashboard]: Fix inconsistent user-agent parsing for Safari/Firefox rtcStats-format uploads.
[0.11.0] - November 24th, 2025
Added
- [KB]: Add a fully integrated, publicly accessible knowledge base with contextual links from charts and observations.
- [Dashboard]: Show every ICE candidate pair state reached, with time spent in each.
- [Engine]: Add 5 new observations covering connectivity and audio issues.
Changed
- [Dashboard]: Redesign the Streams page, and merge ICE candidate pairs into their Peer Connection for easier drill-down.
Fixed
- [Dashboard]: Fix accounts not switching automatically when opening a link from an account you were invited to.
[0.10.0] - November 10th, 2025
Added
- [Engine]: Add new observations covering connectivity issues.
- [Dashboard]: Compute and show aggregated audio MOS in the Overview pane.
Changed
- [Dashboard]: Activate the file retention/expiration policy, with a banner warning before files expire.
[0.9.0] - October 28th, 2025
Added
- [Dashboard]: Redesign the session view into focused panes: Overview, Connections, Streams, Devices, and Logs.
- [Engine]: Add new observations covering connectivity and security issues.
Changed
- [Dashboard]: Show pending invitations directly at sign-in instead of requiring the emailed link.
[0.8.0] - October 13th, 2025
Added
- [Engine]: Add many new observations for audio streams.
- [Dashboard]: Show the connection setup timeline (disconnections, churns, handovers), and add email invitations for team members.
Changed
- [Dashboard]: Block uploading dump files older than M138, and improve the Logs view with peer selection, filters, and infinite-loading.
[0.7.0] - September 25th, 2025
This version is compliant with the new dump format introduced in M132 (JSON based).
Added
- [Dashboard]: Add email/password sign-in.
- [Engine]: Add the first observations.
[0.6.0] - September 11th, 2025
Added
- [Engine]: Add new observations covering connectivity and data channel issues.
- [Dashboard]: Limit upload size, and allow uploading zipped dump files.
[0.5.4] - September 5th, 2025
No public-facing changes in this release.
[0.5.3] - September 4th, 2025
Fixed
- [Dashboard]: Fix a regression where being already signed in did not redirect away from the sign-in page.
[0.5.2] - September 4th, 2025
Fixed
- [Web Site]: Fix incorrect developer-plan yearly and monthly pricing.
[0.5.1] - September 4th, 2025
No public-facing changes in this release.
[0.5.0] - September 4th, 2025
Polish pass on the previous version based on early feedback.
Added
- [Dashboard]: Show a band for audio interruptions, and add retention-based deletion of old session files.
- [Web Site]: Add the homepage pyramid explaining rtcStats' levels of computation, an integrations page, and Terms of Service / Privacy Policy pages.
Fixed
- [Engine]: Fix aggregated statistics computations, mainly packet loss.
[0.4.0] - August 26th, 2025
Added
- [Web Site]: Add the product page explaining rtcStats' architecture.
- [Dashboard]: Add billing purchase history and a usage chart, and direct download of the raw dump and computed summary.
Changed
- [Dashboard]: Show bandwidth/CPU-limitation bands and MOS on stream charts, with an annotation when the media source changes.
Fixed
- [Dashboard]: Fix a duplicated summary file caused by bad URL encoding, and duplicate entries corrupting stream charts.
[0.3.0] - August 21th, 2025
Added
- [Dashboard]: Add stream and device aggregation views, sign-in with GitHub, and monthly credit limits with usage counters.
[0.2.0]
Added
- [Dashboard]: Add a Logs view, data-channel charts, and dump-file download.
Fixed
- [Dashboard]: Fix an endless loop when switching accounts.
[0.1.0] - Initial Release
Added
- Initial release of rtcStats: WebRTC dump analysis and visualization, authentication and account management, team collaboration, real-time data processing, interactive charts, file upload and processing, and a dashboard with analytics.
This changelog follows Keep a Changelog: entries are grouped under Added, Changed, or Fixed for each release, tagged by area (see the legend at the top), and written for readers rather than as a commit log. Version numbers follow Semantic Versioning.