🐱 App logo
Submitted by Zachary Blackwood
Summary
Add a logo on top of the navigation bar of a multipage app
Functions
add_logo
Add a logo (from logo_url) on the top of the navigation page of a multipage app.
Taken from the Streamlit forum
The url can either be a url to the image, or a local path to the image.
Parameters:
Name |
Type |
Description |
Default |
logo_url
|
str
|
URL/local path of the logo
|
required
|
Source code in src/streamlit_extras/app_logo/__init__.py
| @extra
def add_logo(logo_url: str, height: int = 120):
"""Add a logo (from logo_url) on the top of the navigation page of a multipage app.
Taken from [the Streamlit forum](https://discuss.streamlit.io/t/put-logo-and-title-above-on-top-of-page-navigation-in-sidebar-of-multipage-app/28213/6)
The url can either be a url to the image, or a local path to the image.
Args:
logo_url (str): URL/local path of the logo
"""
if validators.url(logo_url) is True:
logo = f"url({logo_url})"
else:
logo = f"url(data:image/png;base64,{base64.b64encode(Path(logo_url).read_bytes()).decode()})"
st.markdown(
f"""
<style>
[data-testid="stSidebarNav"] {{
background-image: {logo};
background-repeat: no-repeat;
padding-top: {height - 40}px;
background-position: 20px 20px;
}}
</style>
""",
unsafe_allow_html=True,
)
|
Import:
from streamlit_extras.app_logo import add_logo # (1)!
- You should add this to the top of your .py file

Examples
example
def example():
if st.checkbox("Use url", value=True):
add_logo("http://placekitten.com/120/120")
else:
add_logo("gallery/kitty.jpeg", height=300)
st.write("👈 Check out the cat in the nav-bar!")