Hey Streamlit community! ![]()
I’m excited to share a new component I’ve been working on that solves a problem I personally ran into: resizable columns in Streamlit.
What it does:
- Drop-in replacement for
st.columnswith the same API - Adds draggable resize handles between columns
- Column widths persist across app reruns
- Supports all existing
st.columnsparameters (gap, alignment, border, etc.)
Why I built it:
I was looking for a way to create resizable columns in Streamlit but couldn’t find any existing extensions that provided this functionality. Since I needed it for my own projects, I decided to build it myself and share it with the community. You know how it goes - if you can’t find it on Stack Overflow, you become the Stack Overflow answer
.

Watch those columns dance! ![]()
Quick example:
import streamlit as st
from streamlit_adjustable_columns import adjustable_columns
# Works exactly like st.columns - but with resize handles!
col1, col2, col3 = adjustable_columns(3, labels=["📊 Charts", "📋 Data", "⚙️ Settings"])
with col1:
st.metric("Sales", "$1,234", "12%")
col2.write("This column can be resized!")
col3.button("Settings")
No more “my columns are too wide/narrow” complaints from users! They can fix it themselves now. ![]()
Installation:
pip install streamlit-adjustable-columns
One pip install away from column freedom! ![]()
The component is MIT licensed and available on PyPI. I’d love to hear your feedback and see what you build with it!
GitHub: GitHub - danieljannai/streamlit-adjustable-columns: A Streamlit custom component for creating columns with adjustable widths using draggable resize handles.
PyPI: Client Challenge
Has anyone else been wishing for resizable columns in Streamlit? What use cases do you have in mind? ![]()
P.S. If you’re still using fixed-width columns in 2024, don’t worry - I won’t judge. But maybe it’s time to let your users have some control? ![]()