# Source: https://docs.streamlit.io/develop/concepts/multipage-apps

# Multipage apps

## Overview

Streamlit provides multiple ways to define multipage apps. Understand the terminology and basic comparison between methods.

## Define multipage apps with `st.Page` and `st.navigation`

Learn about the preferred method for defining multipage apps. `st.Page` and `st.navigation` give you flexibility to organize your project directory and label your pages as you please.

## Creating multipage apps using the `pages/` directory

Define your multipage apps through directory structure. Place additional Python files in a `pages/` directory alongside your entrypoint file and pages are automatically shown in a navigation widget inside your app's sidebar.

## Working with widgets in multipage apps

Understand how widget identity is tied to pages. Learn strategies to get the behavior you want out of widgets.

## Forum

### Still have questions?

Our [forums](https://discuss.streamlit.io) are full of helpful information and Streamlit experts.

## Navigation

* [Get started](/get-started)
  * [Installation](/get-started/installation)
    * [LOCAL DEVELOPMENT](/get-started/installation/local-development)
    * [Use Streamlit Playground](/get-started/installation/streamlit-playground)
    * [Install via command line](/get-started/installation/command-line)
    * [Install via Anaconda Distribution](/get-started/installation/anaconda-distribution)
    * [CLOUD DEVELOPMENT](/get-started/installation/cloud-development)
    * [Use GitHub Codespaces](/get-started/installation/github-codespaces)
    * [Use Snowflake](/get-started/installation/snowflake)
    * [Other platforms](/get-started/installation/tutorials)
* [Develop](/develop)
  * [Concepts](/develop/concepts)
    * [CORE](/develop/concepts/core-concepts)
    * [Architecture and execution](/develop/concepts/architecture)
      * [Running your app](/develop/concepts/architecture/run-your-app)
      * [Streamlit's architecture](/develop/concepts/architecture/architecture)
      * [The app chrome](/develop/concepts/architecture/app-chrome)
      * [Caching](/develop/concepts/architecture/caching)
      * [Session State](/develop/concepts/architecture/session-state)
      * [Forms](/develop/concepts/architecture/forms)
      * [Fragments](/develop/concepts/architecture/fragments)
      * [Widget behavior](/develop/concepts/architecture/widget-behavior)
    * [Multipage apps](/develop/concepts/multipage-apps)
      * [Overview](/develop/concepts/multipage-apps/overview)
      * [Page and navigation](/develop/concepts/multipage-apps/page-and-navigation)
      * [Pages directory](/develop/concepts/multipage-apps/pages-directory)
      * [Working with widgets](/develop/concepts/multipage-apps/widgets)
    * [App design](/develop/concepts/app-design)
      * [Animate and update elements](/develop/concepts/design/animate)
      * [Button behavior and examples](/develop/concepts/design/buttons)
      * [Dataframes](/develop/concepts/design/dataframes)
      * [Multithreading](/develop/concepts/design/multithreading)
      * [Using custom classes](/develop/concepts/design/custom-classes)
      * [Working with timezones](/develop/concepts/design/timezone-handling)
    * [ADDITIONAL](/develop/concepts/additional-features)
    * [Connections, secrets, and authentication](/develop/concepts/connections)
      * [Connecting to data](/develop/concepts/connections/connecting-to-data)
      * [Secrets management](/develop/concepts/connections/secrets-management)
      * [User authentication](/develop/concepts/connections/authentication)
      * [Security reminders](/develop/concepts/connections/security-reminders)
    * [Custom components](/develop/concepts/custom-components)
      * [Intro to custom components](/develop/concepts/custom-components/intro)
      * [Create a Component](/develop/concepts/custom-components/create)
      * [Publish a Component](/develop/concepts/custom-components/publish)
      * [Limitations](/develop/concepts/custom-components/limitations)
      * [Component gallery](https://streamlit.io/components)
    * [Configuration and theming](/develop/concepts/configuration)
      * [Configuration options](/develop/concepts/configuration/options)
      * [HTTPS support](/develop/concepts/configuration/https-support)
      * [Serving static files](/develop/concepts/configuration/serving-static-files)
      * [THEMING](/develop/concepts/configuration/theming)
      * [Customize your theme](/develop/concepts/configuration/theming-customize-colors-and-borders)
      * [Customize colors and borders](/develop/concepts/configuration/theming-customize-colors-and-borders)
      * [Customize fonts](/develop/concepts/configuration/theming-customize-fonts)
    * [App testing](/develop/concepts/app-testing)
      * [Get started](/develop/concepts/app-testing/get-started)
      * [Beyond the basics](/develop/concepts/app-testing/beyond-the-basics)
      * [Automate your tests](/develop/concepts/app-testing/automate-tests)
      * [Example](/develop/concepts/app-testing/examples)
      * [Cheat sheet](/develop/concepts/app-testing/cheat-sheet)
  * [API reference](/develop/api-reference)
  * [Tutorials](/develop/tutorials)
  * [Quick reference](/develop/quick-reference)
* [Deploy](/deploy)
  * [Concepts](/deploy/concepts)
    * [Dependencies](/deploy/concepts/dependencies)
    * [Secrets](/deploy/concepts/secrets)
  * [Streamlit Community Cloud](/deploy/streamlit-community-cloud)
    * [Get started](/deploy/streamlit-community-cloud/get-started)
      * [Quickstart](/deploy/streamlit-community-cloud/get-started/quickstart)
      * [Create your account](/deploy/streamlit-community-cloud/get-started/create-your-account)
      * [Connect your GitHub account](/deploy/streamlit-community-cloud/get-started/connect-your-github-account)
      * [Explore your workspace](/deploy/streamlit-community-cloud/get-started/explore-your-workspace)
      * [Deploy from a template](/deploy/streamlit-community-cloud/get-started/deploy-from-a-template)
      * [Fork and edit a public app](/deploy/streamlit-community-cloud/get-started/fork-and-edit-a-public-app)
      * [Trust and security](/deploy/streamlit-community-cloud/get-started/trust-and-security)
    * [Deploy your app](/deploy/streamlit-community-cloud/deploy-your-app)
      * [File organization](/deploy/streamlit-community-cloud/deploy-your-app/file-organization)
      * [App dependencies](/deploy/streamlit-community-cloud/deploy-your-app/app-dependencies)
      * [Secrets management](/deploy/streamlit-community-cloud/deploy-your-app/secrets-management)
      * [Deploy!](/deploy/streamlit-community-cloud/deploy-your-app/deploy)
    * [Manage your app](/deploy/streamlit-community-cloud/manage-your-app)
      * [App analytics](/deploy/streamlit-community-cloud/manage-your-app/app-analytics)
      * [App settings](/deploy/streamlit-community-cloud/manage-your-app/app-settings)
      * [Delete your app](/deploy/streamlit-community-cloud/manage-your-app/delete-your-app)
      * [Edit your app](/deploy/streamlit-community-cloud/manage-your-app/edit-your-app)
      * [Favorite your app](/deploy/streamlit-community-cloud/manage-your-app/favorite-your-app)
      * [Reboot your app](/deploy/streamlit-community-cloud/manage-your-app/reboot-your-app)
      * [Rename your app in GitHub](/deploy/streamlit-community-cloud/manage-your-app/rename-your-app)
      * [Upgrade Python](/deploy/streamlit-community-cloud/manage-your-app/upgrade-python)
      * [Upgrade Streamlit](/deploy/streamlit-community-cloud/manage-your-app/upgrade-streamlit)
    * [Share your app](/deploy/streamlit-community-cloud/share-your-app)
      * [Embed your app](/deploy/streamlit-community-cloud/share-your-app/embed-your-app)
      * [Search indexability](/deploy/streamlit-community-cloud/share-your-app/indexability)
      * [Share previews](/deploy/streamlit-community-cloud/share-your-app/share-previews)
    * [Status and limitations](/deploy/streamlit-community-cloud/status)
  * [Snowflake](/deploy/snowflake)
  * [Other platforms](/deploy/tutorials)
    * [Docker](/deploy/tutorials/docker)
    * [Kubernetes](/deploy/tutorials/kubernetes)
* [Knowledge base](/knowledge-base)
  * [FAQ](/knowledge-base/using-streamlit)
    * [How do I create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
    * [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
    * [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
    * [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
    * [How do I upgrade to the latest version of Streamlit?](/knowledge-base/using-streamlit/how-upgrade-latest-version-streamlit)
    * [How do I insert elements out of order?](/knowledge-base/using-streamlit/insert-elements-out-of-order)
    * [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
    * [How to remove "· Streamlit" from the app title?](/knowledge-base/using-streamlit/remove-streamlit-app-title)
    * [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
    * [Sanity checks](/knowledge-base/using-streamlit/sanity-checks)
    * [How can I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
    * [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
    * [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
    * [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
    * [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
    * [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
  * [Installing dependencies](/knowledge-base/dependencies)
    * [How to install a package not on PyPI or Conda but available on GitHub](/knowledge-base/dependencies/install-package-not-pypi-conda-available-github)
    * [ImportError libGL.so.1 cannot open shared object file No such file or directory](/knowledge-base/dependencies/libgl)
    * [ModuleNotFoundError No module named](/knowledge-base/dependencies/module-not-found-error)
    * [ERROR No matching distribution found for](/knowledge-base/dependencies/no-matching-distribution)
  * [Deployment issues](/knowledge-base/deploy)
    * [How can I deploy multiple Streamlit apps on different subdomains?](/knowledge-base/deploy/deploy-multiple-streamlit-apps-different-subdomains)
    * [How do I deploy Streamlit on a domain so it appears to run on a regular port (i.e. port 80)?](/knowledge-base/deploy/deploy-streamlit-domain-port-80)
    * [Does Streamlit support the WSGI Protocol? (aka Can I deploy Streamlit with gunicorn)?](/knowledge-base/deploy/does-streamlit-support-wsgi-protocol)
    * [How do I increase the upload limit of st.file_uploader on Streamlit Community Cloud?](/knowledge-base/deploy/increase-file-uploader-limit-streamlit-cloud)
    * [Invoking a Python subprocess in a deployed Streamlit app](/knowledge-base/deploy/invoking-python-subprocess-deployed-streamlit-app)
    * [App is not loading when running remotely](/knowledge-base/deploy/remote-start)
    * [Argh. This app has gone over its resource limits](/knowledge-base/deploy/resource-limits)
    * [How do I share apps with viewers outside my organization?](/knowledge-base/deploy/share-apps-with-viewers-outside-organization)
    * [Upgrade the Streamlit version of your app on Streamlit Community Cloud](/knowledge-base/deploy/upgrade-streamlit-version-on-streamlit-cloud)
    * [Huh. This is isn't supposed to happen message after trying to log in](/knowledge-base/deploy/huh-this-isnt-supposed-to-happen-message-after-trying-to-log-in)
    * [Login attempt to Streamlit Community Cloud fails with error 403](/knowledge-base/deploy/login-attempt-to-streamlit-community-cloud-fails-with-error-403)
    * [How to submit a support case for Streamlit Community Cloud](/knowledge-base/deploy/how-to-submit-a-support-case-for-streamlit-community-cloud)
* [Quick reference](/develop/quick-reference)
  * [Cheat sheet](/develop/quick-reference/cheat-sheet)
  * [Release notes](/develop/quick-reference/release-notes)
    * [2025](/develop/quick-reference/release-notes/2025)
    * [2024](/develop/quick-reference/release-notes/2024)
    * [2023](/develop/quick-reference/release-notes/2023)
    * [2022](/develop/quick-reference/release-notes/2022)
    * [2021](/develop/quick-reference/release-notes/2021)
    * [2020](/develop/quick-reference/release-notes/2020)
    * [2019](/develop/quick-reference/release-notes/2019)
  * [Pre-release features](/develop/quick-reference/prerelease)
  * [Roadmap](https://roadmap.streamlit.app)