Executive Summary
Formula 1’s official digital platform serves a uniquely global and technically sophisticated fanbase, offering live timing data, race results, driver and constructor standings, the F1 TV Pro streaming service, and rich interactive experiences like the 3D car viewer. F1’s digital challenge is distinct: the sport operates on a race-weekend cadence with extreme traffic spikes during sessions, a passionate audience that demands sub-second data accuracy, and a growing direct-to-consumer streaming business (F1 TV) competing against regional broadcast rights holders for the same viewers.
This audit examines f1.com’s core experiences: race results and live timing pages, driver and constructor standings, the F1 TV Pro subscription and streaming flow, the race calendar with timezone handling, and the 3D car viewer. Our analysis is calibrated to the unique pattern of F1’s traffic — intense 2-hour spikes during qualifying and race sessions, followed by sustained engagement around results, analysis, and standings.
Methodology
Our team audited f1.com’s five primary user surfaces: (1) the race results page and live timing interface during three consecutive Grand Prix weekends (practice, qualifying, and race sessions), (2) the driver and constructor championship standings pages, (3) the F1 TV Pro subscription flow and streaming player on web and mobile web, (4) the race calendar with particular attention to timezone conversion accuracy across southern hemisphere and non-standard UTC offset regions, and (5) the 3D car viewer on both desktop and mobile devices with GPU profiling. Testing was conducted across time zones spanning UTC-5 through UTC+11 to validate timezone handling, with load testing during actual live session windows.
QA Audit Findings
QA Health Score
Observed Behavior: During red flag periods (race stoppages), the live timing feed occasionally desyncs — showing some drivers with updated gap times while others display stale pre-red-flag data. When the session resumes, the timing board takes 15-30 seconds to re-establish consistent data across all 20 driver entries.
Technical Root Cause: The red flag state change triggers a full timing reset on the server, but the WebSocket stream sends incremental delta updates. Clients that miss the reset message (due to brief disconnections during the high-traffic red flag moment) continue applying deltas to stale base data, resulting in inconsistent timing across driver entries.
Business Impact: Live timing accuracy is the core value proposition of f1.com during sessions. Desynced data during the most dramatic moments of a race (red flags, safety cars) pushes technically savvy F1 fans to competing timing services and erodes the case for F1 TV Pro subscriptions.
Remediation Path: On red flag state changes, the server should broadcast a full timing snapshot (not just a delta) to all connected clients. Implement a sequence number on each message so clients can detect gaps and request a full resync. Add a visual indicator when the client detects data staleness: “Timing data syncing…”
3D Car Viewer WebGL Context Loss on Mobile GPU Throttling
Medium SeverityObserved Behavior: On mobile devices (particularly mid-range Android), the 3D car viewer renders initially but loses its WebGL context after 60-90 seconds of interaction. The viewer shows a black canvas with no error message. On iOS Safari, backgrounding the tab for more than 30 seconds produces the same result.
Technical Root Cause: The Three.js scene maintains high-resolution textures (team livery, sponsor logos) that exceed the GPU memory budget on constrained devices. When the OS reclaims GPU memory, the webglcontextlost event fires but the application does not handle it — no re-initialization or graceful degradation occurs.
Business Impact: The 3D car viewer is a flagship interactive feature and a key differentiator for f1.com. A broken viewer after minimal interaction signals a low-quality digital experience, particularly damaging with F1’s tech-savvy audience who expect polish from a technology-forward sport.
Remediation Path: Listen for webglcontextlost and webglcontextrestored events. On context loss, display a “Tap to reload 3D view” overlay. On restoration, re-initialize the scene with reduced texture resolution for devices that previously lost context. Implement a performance tier detection on load to serve lower-resolution assets to constrained devices proactively.
Observed Behavior: F1 TV Pro streams that encounter bandwidth degradation (common for fans streaming at circuits or via mobile data) drop from HD to a black buffering screen rather than stepping down to a lower bitrate. Playback resumes at a lower quality after 8-12 seconds of buffering, but the interruption causes users to miss live racing action.
Technical Root Cause: The adaptive bitrate (ABR) algorithm uses a conservative buffer threshold that triggers a quality switch only after the buffer is nearly depleted. The switch to a lower rendition requires a full segment download at the new bitrate, creating a gap while the new segment loads.
Business Impact: F1 fans watching live sessions cannot tolerate 10-second blackouts — they miss overtakes, pit stops, and crashes. Each buffering event during a live session increases the probability of the user switching to a traditional broadcast or a pirate stream with more aggressive ABR tuning.
Remediation Path: Reduce the ABR buffer threshold to trigger quality switches earlier (at 50% buffer remaining rather than 10%). Pre-fetch a low-bitrate “safety” segment in parallel with the current quality to enable instant fallback. During live sessions, prefer continuous playback at reduced quality over buffering for higher quality.
Observed Behavior: The race calendar displays incorrect local times for users in timezones with non-standard UTC offsets (UTC+5:30 India, UTC+5:45 Nepal, UTC+9:30 Adelaide, UTC+12:45 Chatham Islands). Session times are rounded to the nearest hour, causing errors of 15-45 minutes. Additionally, daylight saving transitions mid-season produce one-hour errors for affected regions.
Technical Root Cause: The timezone conversion function uses a lookup table of integer UTC offsets rather than the IANA timezone database. Non-integer offsets are rounded, and DST transitions are handled with a hardcoded date range that does not account for southern hemisphere DST schedules.
Business Impact: Incorrect session times cause fans to miss the start of practice, qualifying, or race sessions — an irreversible negative experience. F1’s audience in India, a key growth market, is specifically affected by the UTC+5:30 rounding error.
Remediation Path: Replace the integer offset lookup with the Intl.DateTimeFormat API using the user’s IANA timezone (Intl.DateTimeFormat().resolvedOptions().timeZone). This handles all fractional offsets and DST transitions automatically. Add an “Add to Calendar” button that generates an .ics file with the correct timezone-aware event.
UX Audit Findings
UX Usability Score
Observed Behavior: The driver championship standings page on mobile displays a full-width card for each of the 20 drivers, each containing the driver photo, team logo, nationality flag, points total, and a per-race breakdown grid. Viewing the full standings requires scrolling through 20 large cards — approximately 8-10 screen heights of content.
Technical Root Cause: The standings component was designed for desktop and uses a card layout that does not adapt to mobile constraints. The per-race breakdown (23+ columns) is rendered inline within each card, creating horizontal scroll within each entry on narrow viewports.
Business Impact: Championship standings are the second most-visited page on f1.com (after race results). The excessive scroll length on mobile means users rarely view drivers below P10, reducing engagement with the full field and missing the mid-field battles that are a key storyline of modern F1.
Remediation Path: On mobile, switch to a compact table layout with driver name, team, and points in a scannable list. Allow tap-to-expand for individual driver detail (per-race breakdown, photo). Add a sticky header showing P1-P3 with points gaps as the user scrolls, maintaining context for the championship battle.
3D Car Viewer Lacks Touch Gesture Guidance on Mobile
Medium SeverityObserved Behavior: The 3D car viewer loads on mobile with no indication of how to interact with it. Users who attempt to scroll past it inadvertently rotate the car model. There is no visual affordance for rotate, zoom, or pan gestures. First-time users frequently tap the car expecting something to happen and receive no feedback.
Technical Root Cause: The viewer was built for mouse interaction (click-drag to rotate, scroll to zoom) and the touch event handlers were mapped from mouse events without a touch-specific onboarding experience. The viewer captures all touch events within its container, hijacking the page’s scroll behavior.
Business Impact: The 3D car viewer is a showcase feature that demonstrates F1’s digital innovation. A confusing interaction model turns a premium feature into an obstacle — users who can’t figure out how to interact with it, or who get trapped in the viewer while trying to scroll, have a worse experience than if the feature didn’t exist.
Remediation Path: Add a semi-transparent gesture overlay on first load: a hand icon with “Drag to rotate · Pinch to zoom” instruction that fades after the first interaction. Implement a two-finger-required gesture for rotation (matching Maps conventions) so single-finger scroll passes through to the page. Add a “Reset View” button.
Observed Behavior: During race weekends, non-subscribers browsing results and articles on f1.com encounter F1 TV Pro subscription prompts on every page transition. The prompt is a full-height modal that requires dismissal before the user can read the content they navigated to. The modal shows the same generic “Watch F1 Live” message regardless of what the user is trying to access.
Technical Root Cause: The subscription upsell modal is triggered by a session-level flag that resets on each server-rendered page navigation. There is no cooldown, frequency cap, or awareness of how many times the user has already dismissed the prompt.
Business Impact: Aggressive, repetitive upselling during race weekends — when f1.com traffic peaks — punishes the free users who represent F1’s top-of-funnel audience. Users who are repeatedly interrupted while trying to read race results will leave f1.com for motorsport.com or social media for their post-race analysis.
Remediation Path: Implement a frequency cap: show the F1 TV modal once per session, then switch to non-intrusive inline CTAs. Contextualize the prompt based on the page: on race results, show “Watch the full race replay on F1 TV Pro”; on live timing, show “Get real-time onboard cameras with F1 TV Pro.” Persist the dismissal in localStorage with a 24-hour cooldown.
Race Calendar Does Not Default to User's Local Timezone
Medium SeverityObserved Behavior: The race calendar initially displays all session times in UTC (or “Track Time”), requiring users to manually select their timezone from a dropdown before they can see relevant local times. The timezone selection does not persist between visits.
Technical Root Cause: The calendar component renders server-side with UTC times as the default. The timezone conversion is a client-side enhancement that requires JavaScript hydration, and the selected timezone is stored in component state rather than persisted to localStorage or a cookie.
Business Impact: F1’s global audience spans every timezone. Forcing users to manually select their timezone on every visit adds friction to the most common use case: “When is the next race in my time?” Users who don’t notice the timezone selector may show up to watch qualifying an hour early or an hour late.
Remediation Path: Detect the user’s timezone automatically via Intl.DateTimeFormat().resolvedOptions().timeZone on client hydration and set it as the default. Persist the timezone selection in localStorage for returning visitors. Show both track time and local time simultaneously to avoid ambiguity.
CRO Audit Findings
Conversion Readiness
Observed Behavior: The F1 TV Pro trial signup page promotes “Watch all sessions live” as the primary value proposition, but does not demonstrate the live timing integration, multi-onboard camera selection, or real-time telemetry data that differentiate F1 TV Pro from standard broadcast. The page uses static screenshots rather than interactive demos.
Technical Root Cause: The trial landing page was built by the marketing team using a generic streaming service template. The unique F1 TV features (timing, telemetry, multi-cam) are described in text but not visually demonstrated.
Business Impact: “Watch live” is table stakes — users can get this from their regional broadcaster. F1 TV Pro’s unique value (data, onboards, choice of commentary) is the reason a fan would pay for a second live viewing option. Failing to demonstrate this value in the trial flow means the trial converts on price rather than differentiation.
Remediation Path: Embed a 30-second autoplay demo video on the trial page showing the multi-cam selector, live timing overlay, and telemetry dashboard in action during a real overtake. Add interactive mockups that let prospective subscribers toggle between cameras and view sample timing data. Lead with “See what your broadcaster doesn’t show you.”
Merchandise Store Not Cross-Promoted from Race Results Pages
Medium SeverityObserved Behavior: After a race, the results page shows the finishing order, fastest lap, and a link to the full race replay — but contains no contextual promotion of the F1 merchandise store. A fan excited about Verstappen winning sees no “Shop Red Bull Racing gear” or “Get the race winner’s cap” prompt.
Technical Root Cause: The results page and the merchandise store are separate business units with no content integration. The results page template has no dynamic commerce module or API connection to the merchandise inventory.
Business Impact: Post-race emotional engagement is the highest-intent moment for merchandise purchases. Fans celebrate with purchases. By not surfacing merchandise at this peak-emotion moment, F1 is leaving impulse-purchase revenue entirely to third-party retailers.
Remediation Path: Add a contextual “Shop the Winner” module to race results pages that dynamically shows the winning team’s merchandise based on the race outcome. Include the driver’s cap, team polo, and race-specific items. Time this module to appear within 30 minutes of race completion when emotional engagement peaks.
Driver and Team Pages Do Not Upsell F1 TV Archive Content
Medium SeverityObserved Behavior: Driver profile pages (e.g., Lewis Hamilton’s page) show career statistics, current season results, and news — but do not link to any of Hamilton’s classic races, memorable qualifying laps, or documentary content available in the F1 TV archive.
Technical Root Cause: The driver/team page CMS does not have a content relationship with the F1 TV content catalog. The pages are managed editorially, and no automated or manual curation of relevant archive content exists.
Business Impact: The F1 TV archive (1,000+ historic races and documentaries) is a major differentiator and a key retention tool for subscribers. Failing to surface this content when fans are browsing their favorite driver’s profile misses a natural discovery moment that could drive subscriptions and reduce churn.
Remediation Path: Add a “Watch on F1 TV” module to driver and team pages that surfaces 3-5 relevant archive videos (e.g., “Hamilton’s Greatest Victories,” “2021 Abu Dhabi Grand Prix”). For non-subscribers, this serves as an upsell; for subscribers, it deepens engagement and reinforces the value of their subscription.
Observed Behavior: F1’s push notifications during race weekends (“Qualifying starts in 30 minutes”) link to the f1.com schedule page rather than to the F1 TV stream or trial signup. Non-subscribers receive the same notification as subscribers, with no differentiation in the CTA or destination.
Technical Root Cause: The push notification system sends a single notification variant to all opted-in users. There is no segmentation based on F1 TV subscription status, and the notification payload does not include conditional deep links.
Business Impact: Pre-session notifications are the highest-intent moment to convert a fan into an F1 TV subscriber — they want to watch and you’re telling them the session is about to start. Sending them to a static schedule page instead of a “Watch live now — start your free trial” flow wastes this intent.
Remediation Path: Segment push notifications by F1 TV subscription status. For subscribers: “Qualifying starts in 30 min → Watch Live” (deep link to F1 TV player). For non-subscribers: “Qualifying starts in 30 min → Start your free trial to watch live” (deep link to trial signup with session context).
SEO Audit Findings
SEO Technical Score
Observed Behavior: f1.com’s race results pages do not include SportsEvent JSON-LD schema with competitors, finishing positions, or event status. Google queries like “Bahrain Grand Prix results” show Wikipedia, Motorsport.com, and Google’s own sports card above f1.com — the official source of the data.
Technical Root Cause: The results pages use a custom React component for data display but do not inject any structured data. The server-rendered HTML contains the results in table markup but without semantic JSON-LD annotation.
Business Impact: As the official source of Formula 1 results, f1.com should own the top organic position for every race result query. Without SportsEvent schema, Google cannot confidently feature f1.com in rich results, and competitors who implement the schema capture traffic that should naturally flow to the official site.
Remediation Path: Implement SportsEvent JSON-LD on all race results pages including name (e.g., “2026 Bahrain Grand Prix”), startDate, location with Place, eventStatus: EventScheduled/EventInProgress/EventCompleted, and competitor entries for each driver with result positions. Generate this schema server-side from the same data source that populates the results table.
Driver and Team Pages Missing Person/Organization Schema
Medium SeverityObserved Behavior: f1.com’s driver profile pages (e.g., /drivers/max-verstappen) do not include Person schema, and team pages (e.g., /teams/red-bull-racing) lack SportsOrganization or Organization schema. Google Knowledge Panels for F1 drivers pull data from Wikipedia rather than the official F1 source.
Technical Root Cause: The driver and team page templates were built as editorial content pages without structured data. The rich data available (nationality, team affiliation, career statistics, social media links) exists in the CMS but is not serialized into schema.
Business Impact: f1.com should be the canonical source of F1 driver and team information in Google’s Knowledge Graph. Without proper entity markup, Wikipedia and Wikidata define these entities, and f1.com is treated as just another content publisher rather than the authoritative source.
Remediation Path: Add Person schema to driver pages with name, nationality, memberOf (team as SportsOrganization), sameAs (social media profiles), image, and birthDate. Add SportsOrganization schema to team pages with name, member (drivers), url, and sameAs. This establishes f1.com as the entity authority.
Observed Behavior: f1.com’s archive of historical race results (dating back to 1950) is rendered entirely client-side. Navigating to a historical results page (e.g., the 1994 San Marino Grand Prix) shows a loading spinner in the server-rendered HTML. Googlebot indexes these pages as empty containers.
Technical Root Cause: The archive section uses a React SPA that fetches historical data from an API on client hydration. The server returns a shell HTML with no content. The historical data API is not called during server-side rendering.
Business Impact: F1’s 70+ year history is an enormous content library that should drive long-tail organic traffic for queries like “1988 Monaco Grand Prix results” or “Ayrton Senna career statistics.” This entire library is invisible to Google, representing a massive missed SEO opportunity.
Remediation Path: Implement server-side rendering for all historical results pages. Since this data is static (historical results don’t change), these pages are ideal candidates for static site generation at build time, eliminating both the SEO issue and the client-side loading delay. Generate canonical URLs and SportsEvent schema for each historical race.
Observed Behavior: F1 TV video content pages (race replays, documentaries, onboard compilations) are indexed by Google but do not include isAccessibleForFree: false or the required paywall structured data. Google may interpret these pages as freely accessible, leading to user frustration when they click through and hit the F1 TV paywall.
Technical Root Cause: The F1 TV content pages share the same template as free video content (highlight clips, press conferences). There is no conditional schema injection based on content access level.
Business Impact: Users who click through from Google expecting free content and hit a paywall have a negative experience and are less likely to return or subscribe. Google may also penalize pages where the content does not match the structured data signals, reducing the ranking of F1 TV content pages.
Remediation Path: For F1 TV-exclusive content, add isAccessibleForFree: false to the VideoObject schema and include a hasPart property with a WebPageElement specifying the cssSelector for the paywalled content. For free highlights, set isAccessibleForFree: true. This ensures Google sets correct expectations in search results.
Strategic Recommendations
Formula 1’s digital platform has a unique advantage — it is the sole official source for the world’s most data-rich sport — but it is not yet capitalizing on this position. The three highest-impact areas for investment are:
- Make Live Timing Bulletproof and the Hero of the Digital Experience: F1’s live timing data is something no broadcaster or competitor can replicate. The WebSocket desync issues during red flags and the lack of prominence for timing data in the F1 TV marketing flow mean the platform’s greatest asset is simultaneously unreliable and undersold. Fix the real-time infrastructure and make live timing the centerpiece of the F1 TV Pro value proposition.
- Unlock the Historical Archive for SEO and Subscription Growth: F1 has 70+ years of race history that is currently invisible to search engines. Server-rendering the archive, adding SportsEvent schema to every historical race, and implementing Person/Organization entities for drivers and teams will build f1.com’s authority as the canonical source for all Formula 1 data — driving organic traffic that feeds the F1 TV subscription funnel.
- Convert Race Weekend Emotion into Revenue: The post-race results page and pre-session push notifications represent the highest-intent moments in the F1 fan’s digital journey, but neither is monetized effectively. Contextual merchandise promotion on results pages, segmented push notifications driving F1 TV trials, and archive content surfacing on driver pages will capture the emotional engagement that currently dissipates without conversion.