Live Status Tracker New
Drop in a Twitch handle, get a live-status badge that updates every 30 seconds. Copy the embed URL into Discord or your website to show "live now" auto-magically.
Status fetched from Twitch Helix and Kick public API via Streamrise — no viewer auth, no analytics tracking.
The embed URL renders just the badge above with a transparent background. Drop it into an OBS Browser Source (suggested 320×120) or paste it into Discord — pasting the page URL into Discord unfurls the badge as an image card via og:image. Refresh interval: 30s.
How the badge fetches state
On every refresh tick the widget calls /_api/twitch/live-status?login=... (or /_api/kick/live-status for Kick handles). The Twitch route hits Helix /users plus /streams with a server-side client_credentials token: no viewer auth, no rate-limit charge against your channel. The Kick route hits /api/v2/channels/{slug}, which is the same JSON endpoint Kick's web app uses internally. Both responses are cached at the edge for 30 seconds with a 60-second stale-while-revalidate window, so a thousand viewers polling the same handle cost ~one upstream call per 30s.
Helix lags real go-live state by 1-3 minutes. That's Twitch's own cache, not ours. Polling faster than the documented 15-second floor doesn't help; you'll just see the same stale value more often. The Kick endpoint updates closer to real time but is rate-limited per IP, so the same 30-second floor applies in practice.
Multi-channel grid for teams and orgs
Paste up to 25 handles separated by commas, spaces, or newlines and the widget switches to a sortable grid: live channels first, ordered by viewer count, with offline tiles greyed out below. One Helix call covers all 25 (Helix accepts up to 100 user_login params per request) so the request budget is identical to single-channel mode. The grid is the right layout for tournament organisers, multi-streamer collectives, or a "who's live in the org right now" page on your site.
Embed in OBS: exact pixel sizes
In OBS, add a Browser Source pointing at the embed URL (the Copy embed button gives you the exact value). Recommended dimensions: 320×120 for single-channel mode, 640×320 for a 25-handle grid. The widget renders with a transparent background. Set the OBS source to "Transparent background" and it composites cleanly over your scene without a coloured box. Auto-refresh inside the Browser Source uses the interval you set in the panel; OBS does not need to reload the source for new state.
Embed in Discord: image vs page-link unfurl
Discord doesn't unfurl iframes, but it auto-unfurls images and Open Graph cards. Two paths:
- Direct image: paste
https://stream-rise.com/_api/twitch/live-status.png?login=<handle>into Discord. Discord renders it as an inline image, refreshing whenever Discord's CDN re-fetches the URL (typically after a few hours). Useful for permanent "is X live?" posts in a server's announcements channel. - Page link: paste the full
/live-status-tracker?...URL. Discord pulls ourog:imagemeta tag, which points at the same PNG endpoint with the user's handle stamped in. Same render, but the unfurl card carries the page title and description too.
Embed on a website: iframe paste-in
The Copy iframe button gives you an iframe snippet sized to the layout you've selected. The embed page strips its hero and FAQ in ?embed=1 mode, so the iframe contents fit edge-to-edge. Useful for WordPress block embeds, Webflow's HTML Embed component, or a raw <iframe> tag in any static site. The iframe inherits the parent's background (we ship transparent), so the badge looks native on light and dark themes.
Kick channels: same input, different endpoint
Toggle the Platform switch to Kick and the same input now hits Kick's public /api/v2/channels/{slug} route. We map the livestream object to the same response shape used for Twitch, so the badge renders identically: display name, avatar, live pill, viewer count, and current category. Kick sits behind Cloudflare, which occasionally flags requests from data-center egress IPs; in that case the badge shows "Kick API blocked" rather than hanging or returning a stale value.
Customisation reference
- Theme: Twitch (purple), Kick green, or Minimal (no accent). Pure CSS, no JS toggle cost.
- Refresh interval: 15-600 seconds. Default 30s. Lower than 15s gates at the upstream cache; higher than 60s saves nothing visible to viewers.
- Live thumbnail: single-channel mode only. Twitch's CDN URL is bucketed at 30 seconds so the browser cache doesn't get blown on every poll.
- Embed mode: append
?embed=1to strip the hero / FAQ / settings panel; the result is just the badge or grid, transparent background.
For deeper context, see the Twitch Growth Calculator and the Channel Audit tool. To verify your username and brand consistency before the badge goes public, Twitch Username Availability covers the 2026 naming rules.