Deploy an app

Streamlit Community Cloud lets you deploy your apps in just one click, and most apps will deploy in only a few minutes. If you don't have an app ready to deploy, fork or clone one of our example apps — you can find apps for machine learning, data visualization, data exploration, A/B testing and more.



If you want to deploy your app on a different cloud service, check out the Deploy Streamlit apps article in our Knowledge Base.

Streamlit Community Cloud launches apps directly from your GitHub repo, so your app code and dependencies need to be on GitHub before you try to deploy the app. See App dependencies for more information.

Streamlit allows you to optionally set configuration options via four different methods. Among other things, you can use custom configs to customize your app's theme, enable logging, or set the port on which your app runs. For more information, see Configuration and Theming. On Streamlit Community Cloud, however, you can only set configuration options via a configuration file in your GitHub repo.

Specifically, you can add a configuration file to the root (top-level) directory of your repo: create a .streamlit folder, and then add a config.toml file to that folder. E.g., if your app is in a repo called my-app, you would add a file called my-app/.streamlit/config.toml. Say you want to set the theme of your app to "dark". You would add the following to your .streamlit/config.toml file:



There can be only one configuration file, regardless of the number of apps in the repo.

To deploy an app, click "New app" from the upper right corner of your workspace, then fill in your repo, branch, and file path, and click "Deploy". As a shortcut, you can also click "Paste GitHub URL".

Deploy an app

If you are connecting to a data source or want to select a Python version for your app, you can do that by clicking "Advanced settings" before you deploy the app.

Advanced settings

You can connect to private data sources either by using secrets management or with IP allowlisting. Read more on how to connect to data sources.



Streamlit Community Cloud supports Python 3.7 - Python 3.10, and defaults to version 3.9. You can select a version of your choice from the "Python version" dropdown in the "Advanced settings" modal.

Your app is now deploying and you can watch while it launches. Most apps take only a couple of minutes to deploy, but if your app has a lot of dependencies it may take some time to deploy the first time. After the initial deployment, any change that does not touch your dependencies should show up immediately.

Watch app launch


The Cloud logs on the right hand side are only viewable to the developer and is how you can grab logs and debug any issues with the app. Learn more about Cloud logs.

That's it — you're done! Your app now has a unique subdomain URL that you can share with others. Click here to read about how to share your app with viewers.

App subdomain URLs follow a structure based on your GitHub repo:

https://[user name]-[repo name]-[branch name]-[app path]-[short hash]

For example:

This subdomain is unique to your app and can be used to share your app with others. However, the default subdomain is not always the most memorable or easy to share. That's why you can also set a custom domain for your app.

Streamlit Community Cloud supports embedding public apps using the subdomain scheme. To embed a public app, add the query parameter /?embed=true to the end of the * subdomain URL.

For example, say you want to embed the Streamlit Docs' radio button app: The URL to include in your iframe is:

(view standalone Streamlit app)


There will be no official support for embedding private apps.

In addition to allowing you to embed apps via iframes, the ?embed=true query parameter also does the following:

  • Removes the toolbar with the hamburger menu
  • Removes the padding at the top and bottom of the app
  • Removes the footer
  • Removes the colored line from the top of the app

To allow more granular control over the embedding behavior, Streamlit lets you optionally specify one or more instances of the ?embed_options query parameter. The supported values for ?embed_options are listed below:

  1. Embed (default)

  2. Show toolbar

  3. Show padding

  4. Show footer

  5. Show colored line

  6. Disable scrolling

  7. Open with light theme

  8. Open with dark theme


You can also combine the params:


Both ?embed and ?embed_options are invisible to st.experimental_get_query_params and st.experimental_set_query_params. The former ignores the embed query parameters and does not return them, while the latter disallows setting embed query parameters.

Subdomains are customizable! With this step you'll be able modify your app URLs to reflect your app content, personal branding, or whatever you’d like. The URL will appear as:


To customize your app subdomain from the dashboard:

  1. Click the "︙" overflow menu to the app's right and select "Settings".

    Custom subdomain settings
  2. View the "General" tab in the App settings modal. Your app's unique subdomain will appear here.

    Custom subdomain pick

  3. Pick a custom subdomain between 6 and 63 characters in length for your app's URL and hit "Save".

    Custom subdomain save

It's that simple! You can then access your app by visiting your custom subdomain URL 🎉.

If a custom subdomain is not available (e.g. because it's already taken), you'll see an error message like this:

Was this page helpful?

editSuggest edits

Still have questions?

Our forums are full of helpful information and Streamlit experts.