Skip to main content
The DownloadButton creates a button that downloads a file when clicked.

Basic usage

import gradio as gr

def get_file():
    return "output.txt"

with gr.Blocks() as demo:
    download = gr.DownloadButton("Download File", value="output.txt")
    
demo.launch()

Constructor

label
str
default:"'Download'"
Button label text
value
str | Path | Callable | None
default:"None"
Filepath or URL to download. Can be a function that returns the path
variant
Literal['primary', 'secondary', 'stop']
default:"'secondary'"
Button style variant
size
Literal['sm', 'md', 'lg']
default:"'lg'"
Button size

Events

  • click - Triggered when button is clicked

Examples

Dynamic download

import gradio as gr

def create_report(data):
    # Generate report file
    with open("report.txt", "w") as f:
        f.write(data)
    return "report.txt"

with gr.Blocks() as demo:
    input_data = gr.Textbox(label="Data")
    download = gr.DownloadButton("Download Report")
    
    input_data.change(
        fn=create_report,
        inputs=input_data,
        outputs=download
    )
    
demo.launch()

Primary button

import gradio as gr

download = gr.DownloadButton(
    "Download Results",
    value="results.csv",
    variant="primary"
)