gradio-app/gradio

Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work!

22
Hotness score
90
Reliability score
43,166
Stars
over 7 years
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current22

Previous26

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 1
  • 40% Hot this week: 33
  • 20% Breakout: 1
  • Stars gained: 1d: 0
  • Stars gained: 7d: 43
  • Stars gained: 14d: 104
  • Stars gained: 30d: 239
  • Stars gained: 90d: 898

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current90

Previous90

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 86
  • 30% Closure: 88
  • 20% Shipping: 90
  • 10% Liveness: 100
  • 10% Support burden: 90

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-18).

Continuity30% of headline86

Activity on 81 of 90 tracked days in the last 90 and 26 of 30 in the last 30.

Closure30% of headline88

Merged 160 of 206 PRs opened and closed 344 of 101 issues opened over the last 90 tracked days β€” PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline90

605 releases in the last 180 days, 170 in the last 90 and 54 in the last 30 β€” a steady cadence scores highest.

Liveness10% of headline100

Last push 2 days ago β€” freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline90

209 open issues against 43,166 stars β€” about 5 open issues per 1,000 stars. Lighter backlogs score higher.

Adoption confidence100

Modeled β€” how confidently teams are adopting this repo. Stargazers

Maintenance quality93

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score7

Modeled β€” lower is better; adoption and continuity risk. Repository

Stays active (30d)93%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)94%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)100

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)9%

Modeled β€” lower is better; concentration of commits in few maintainers. Contributors graph

Topics

Explore related topics

Jump into the topic listings this repository belongs to.

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Issues opened

Jul 12, 2026

Current6

Previous10

Weekly total

68340
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jul 12, 2026

Current12

Previous27

Weekly total

146730
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jul 12, 2026

Current8

Previous18

Weekly total

43220
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jul 12, 2026

Current9

Previous17

Weekly total

43220
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jul 12, 2026

Current8

Previous15

Weekly total

31160
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Jul 18, 2026

Current1.00

Previous1.00

Daily ratio β€” a gap means nothing was opened that day

How this works: each day's value is issues closed that day Γ· issues opened that day. Days when nothing was opened render as gaps β€” never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

16.008.000.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

109 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day Γ· issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

Jul 18, 2026

Current1.00

Previous0.50

Daily ratio β€” a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day Γ· pull requests opened that day. Days when nothing was opened render as gaps β€” never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

9.004.500.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

140 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day Γ· pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Releases

Jul 19, 2026

Current0

Previous54

Weekly total

65330
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Project Overview

Gradio is a Python library for wrapping any machine learning model, function, or API in a shareable web interface. You define inputs and outputs using Python types, and Gradio handles rendering, server routing, and browser communication. The result is a live app at localhost:7860 or a public URL via Hugging Face Spaces.

The project is actively maintained by Hugging Face engineers with frequent releases and a responsive issue tracker. With 42,000+ GitHub stars, it has become one of the most-adopted tools for ML prototyping and demo sharing in the Python ecosystem.

The license is Apache 2.0, which is permissive for commercial and internal use without restrictions.

Key Challenges Addressed

Getting a machine learning model in front of non-engineers used to require a separate frontend project. Gradio eliminates that:

  • Zero frontend code. You describe inputs and outputs as Python types. Gradio renders the right widgets automatically β€” textboxes for strings, sliders for numbers, image uploaders for PIL images.
  • Instant sharing. Pass share=True to launch() and you get a public URL within seconds through Hugging Face's tunnel. No deployment infrastructure needed for a prototype.
  • Fast iteration. Wrapping a new model version takes minutes. You can swap models, preprocessing, and output formatting while keeping the UI unchanged.
  • Hugging Face ecosystem integration. Pull any model from the Hub, wrap it in a Gradio interface, and push the demo back to Spaces β€” all from Python.

Getting Started

Install the package:

pip install gradio

A minimal text interface:

import gradio as gr

def answer(question):
    return f"You asked: {question}"

demo = gr.Interface(fn=answer, inputs="text", outputs="text")
demo.launch()

This opens a browser at http://127.0.0.1:7860. Add share=True inside launch() for a temporary public URL.

Sharp edges:

  • Calling demo.launch() in a Jupyter notebook without inline=True opens a separate browser tab and leaves a background server running with no obvious way to stop it β€” use demo.launch(inline=True) in notebook contexts.
  • gr.Interface infers component types from Python type annotations. If your function lacks type hints and returns a complex object, Gradio silently falls back to a plain textbox and drops structure β€” annotate your function signatures explicitly.
  • The share=True tunnel requires an outbound HTTPS connection to Hugging Face's servers. Corporate VPNs and air-gapped machines block this silently with a generic timeout; verify connectivity first with a direct HTTPS request to huggingface.co before debugging Gradio itself.

Features and Use Cases

Blocks API β€” gr.Blocks is the composable layout layer underneath gr.Interface. You arrange components in rows, columns, and tabs, and wire multiple Python functions to different UI events. Use Blocks when a single-input-to-single-output flow is too limiting.

Streaming outputs β€” gr.Textbox supports streaming. If your function yields tokens progressively (as in LLM inference), Gradio streams them to the browser in real time:

def stream_tokens(prompt):
    for token in model.generate(prompt):
        yield token

demo = gr.Interface(fn=stream_tokens, inputs="text", outputs="text")

Chat interface β€” gr.ChatInterface wraps a chat function with a full conversation UI including message history and a clear button. For LLM chat demos, this eliminates most of the boilerplate.

State management β€” gr.State stores per-session values server-side. Use it to maintain conversation history, per-user model instances, or accumulated results without passing them through the UI form.

Queue β€” For long-running model inference, demo.queue() batches concurrent requests and streams progress back via server-sent events. This is how you handle multiple users without timeouts.

Component library β€” Built-in components cover text, images, audio, video, dataframes, Matplotlib and Plotly plots, 3D models, and file uploads. You can build custom components in Svelte using the gradio cc CLI if you need something the built-in set doesn't cover.

Ecosystem and Dependencies

Gradio is tightly coupled to the Hugging Face ecosystem. The huggingface_hub library lets you push demos to Hugging Face Spaces directly: demo.push_to_hub("username/demo-name") publishes your interface with a permanent public URL.

The transformers library integrates naturally β€” load a pipeline and pass it as the function argument. Gradio infers the right input/output components from the pipeline type in many common cases.

On the server side, Gradio runs on FastAPI. If you need to embed a Gradio interface in an existing web application, gr.mount_gradio_app(app, demo, path="/gradio") attaches it to any ASGI-compatible app without spinning up a second process.

Architectural Overview

Gradio's server is a FastAPI application that serves a Svelte-based frontend and handles API calls from the browser. The core data flow:

  1. Browser sends a POST to /run/predict with serialized inputs.
  2. FastAPI deserializes inputs into Python objects using each component's preprocess method.
  3. Your Python function runs and returns output objects.
  4. FastAPI serializes outputs using each component's postprocess method and returns JSON or file URLs.
  5. The browser renders the response.

Key design points:

  • Component serialization β€” Each gr.Component owns its serialize/deserialize logic. Adding a custom component means implementing preprocess, postprocess, and the Svelte frontend widget.
  • Queue β€” The optional queue sits between the FastAPI handler and your function, managing concurrency and streaming progress back via SSE. Enable it before going multi-user.
  • Session state β€” Stored in-process, keyed by session ID. It does not survive server restarts and does not work correctly behind load balancers without sticky sessions.

Pros and Cons

Pros:

  • Very low boilerplate for the most common case β€” a useful demo is often under 10 lines of Python.
  • First-class streaming output support built into the component system, not a workaround.
  • gr.ChatInterface eliminates nearly all LLM chat demo scaffolding.
  • Hugging Face Spaces deployment is a single function call from Python.
  • Active maintenance with a well-resourced team and frequent releases.
  • Apache 2.0 license with no commercial-use restrictions.

Cons:

  • Layout control is limited. Complex multi-panel dashboards require verbose Blocks wiring and feel constrained compared to a full UI framework.
  • Custom components require Svelte β€” there is no Python-only path for frontend customization.
  • Session state is in-process and non-persistent. Server restarts lose all state, and load-balanced deployments require sticky sessions to work correctly.
  • share=True is a demo convenience, not a production path. It provides no authentication, no rate limiting, and no uptime guarantee.
  • The significant over the last ~6 months decline in adoption momentum is worth factoring into long-term tool decisions.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

11556-2
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Gradio

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

179 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

179 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

20100
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Gradio

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

146730
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Gradio

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

112560
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Gradio

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

107540
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Gradio

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

178 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

146 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

82410
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Gradio

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub API observation. Historical values render only when the source provides a real observation for that day.

178 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub API observation. Historical values render only when the source provides a real observation for that day.

146 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Gradio

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Gradio

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

179 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

65330
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Gradio

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
Streamlit

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
Dash

GitHub release published_at events bucketed by UTC day; drafts are excluded.

179 observed daily rows. Missing days are not fabricated.

DateValue
Panel

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
VoilΓ 

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
Shiny for Python

GitHub release published_at events bucketed by UTC day; drafts are excluded.

179 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Gradio

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Streamlit

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Dash

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

179 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Panel

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
VoilΓ 

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Shiny for Python

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

179 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 Γ— Hot today + 0.40 Γ— Hot week + 0.20 Γ— Breakout.

  • Same-day multiplier = stars 1d Γ· max(1, stars 7d Γ· 7)
  • Weekly multiplier = stars 7d Γ· max(1, stars 30d Γ· 30 Γ— 7)
  • Fortnight multiplier = stars 14d Γ· max(1, stars 90d Γ· 90 Γ— 14)
  • Hot today = clamp(70 Γ— log-scale(stars 1d, 1000) + 30 Γ— breakout-scale(same-day, 4))
  • Hot week = clamp(75 Γ— log-scale(stars 7d, 5000) + 25 Γ— breakout-scale(weekly, 3))
  • Breakout = clamp(35 Γ— breakout-scale(same-day, 4) + 40 Γ— breakout-scale(weekly, 3) + 25 Γ— breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Gradio

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Streamlit

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Dash

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

179 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Panel

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
VoilΓ 

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Shiny for Python

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

179 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 Γ— Continuity + 0.30 Γ— Closure + 0.20 Γ— Shipping + 0.10 Γ— Liveness + 0.10 Γ— Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 Γ— (20% Γ— release ratio 30d + 30% Γ— release ratio 90d + 50% Γ— release ratio 180d); ratios are releases Γ· 2, 6, and 12, capped at 1
  • Support burden = 100 βˆ’ 2 Γ— open issues per 1,000 stars
  • Liveness = 100 Γ— exp(βˆ’pushed days ago Γ· 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Several Python-first UI frameworks target overlapping use cases:

Project Repo Hotness (~6mo) PRs merged (~6mo) Star growth (~6mo)
Gradio https://github.com/gradio-app/gradio 69.77 232 438
Streamlit https://github.com/streamlit/streamlit 99.38 2242 4644
Dash https://github.com/plotly/dash metrics pending 0 75
Panel https://github.com/holoviz/panel metrics pending 0 24
VoilΓ  https://github.com/voila-dashboards/voila metrics pending 0 6
Shiny for Python https://github.com/posit-dev/py-shiny metrics pending 0 9

The best overall alternative is Streamlit. It has broader community adoption, a larger ecosystem of third-party components, and is better suited to data-heavy internal tools where Gradio's ML-demo-first design becomes a constraint.

Conclusion

If you're building ML model demos, prototyping LLM interfaces, or publishing interactive experiments on Hugging Face Spaces, Gradio is the fastest path from a Python function to a shareable app. The official documentation covers the full component API and Blocks system with working examples for the most common use cases.

Do not use share=True in production β€” it routes all traffic through Hugging Face tunnel servers with no authentication, no rate limiting, and no uptime guarantee, leaving your endpoint open to the public internet. For any deployment beyond a personal prototype, host the underlying FastAPI server directly behind a reverse proxy and start by reading the Gradio deployment guide before putting a public URL in front of users.

Join the conversation

Reviews Β· Questions Β· Posts

Share what you know about gradio β€” write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting gradio.

Write your review now β€” it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to gradio-app/gradio. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run gradio in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses gradio β€” a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Python and Ui world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.