Recently, while working on a Python data visualization project, I needed to make my chart titles stand out more clearly. The issue was that the default title font size in Matplotlib was too small for presentations and reports.
If you’ve ever tried to make your Matplotlib charts look more professional, you probably realized that adjusting the figure title font size can make a big difference. It helps improve readability and gives your plots a polished, presentation-ready look.
In this tutorial, I’ll show you a few simple ways to change the figure title font size in Matplotlib using Python. I’ll walk you through each method that I personally use in my projects, so you can pick the one that best fits your needs.
Method 1 – Change Figure Title Font Size Using plt.suptitle()
One of the most common ways to add a title to a Matplotlib figure is by using the plt.suptitle() function. This method allows you to set the figure-level title, which appears above all subplots.
You can easily control the font size of this title by using the fontsize parameter.
Here’s how I usually do it in Python:
import matplotlib.pyplot as plt
# Sample data
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 19]
y2 = [5, 9, 8, 13, 15]
# Create a figure with two subplots
fig, ax = plt.subplots(1, 2, figsize=(10, 4))
# Plot data
ax[0].plot(x, y1, color='blue', marker='o')
ax[0].set_title('Sales Growth (East Region)', fontsize=12)
ax[1].plot(x, y2, color='green', marker='o')
ax[1].set_title('Sales Growth (West Region)', fontsize=12)
# Add a figure-level title
plt.suptitle('Quarterly Sales Report - 2025', fontsize=18, fontweight='bold')
# Display the figure
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()You can refer to the screenshot below to see the output.

In this example, I used plt.suptitle() to add a main title for the entire figure. The fontsize=18 parameter makes the title large enough to stand out.
You can also make the title bold using the fontweight=’bold’ argument, just like I did above.
Method 2 – Change Font Size Using rcParams (Global Settings)
If you’re working on multiple plots and want to apply a consistent title font size across all figures, you can use Matplotlib’s rcParams.
This method is great when you want to set a default font size for all titles without having to specify it manually each time.
Here’s how I apply it in Python:
import matplotlib.pyplot as plt
# Change default title font size globally
plt.rcParams['axes.titlesize'] = 16
plt.rcParams['figure.titlesize'] = 20
# Create a figure
fig, ax = plt.subplots()
# Plot some data
ax.plot([1, 2, 3, 4], [10, 20, 15, 25], color='purple', marker='s')
# Add titles
ax.set_title('Monthly Revenue (in $1000s)')
fig.suptitle('Company Financial Overview', fontweight='bold')
plt.show()You can refer to the screenshot below to see the output.

Here, I changed two parameters:
- axes.titlesize: sets the font size for subplot titles (ax.set_title()).
- figure.titlesize: sets the font size for the figure-level title (fig.suptitle()).
Using rcParams is a clean and scalable way to manage your chart aesthetics, especially when you’re building dashboards or automated reports in Python.
Method 3 – Change Font Size Using set_fontsize() on Title Object
Another neat trick I often use is to modify the title object directly. When you create a title using fig.suptitle(), it returns a text object that you can further customize.
This gives you more flexibility to dynamically adjust title properties after creating the plot.
Here’s an example:
import matplotlib.pyplot as plt
# Create a figure and axis
fig, ax = plt.subplots()
# Plot sample data
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [120, 150, 170, 200], color='orange')
# Add a figure title and modify it later
title_obj = fig.suptitle('Annual Revenue by Quarter', fontsize=14)
title_obj.set_fontsize(22)
title_obj.set_fontweight('bold')
plt.show()You can refer to the screenshot below to see the output.

In this case, I first set the font size to 14 and then updated it to 22 using the set_fontsize() method. This approach is useful when you want to dynamically adjust titles based on user input or report templates.
Method 4 – Use fig.text() for Custom Title Placement and Font Size
Sometimes, I need to place the title in a custom position, for example, slightly higher or aligned differently. In such cases, I prefer using the fig.text() method.
This method gives you full control over the position, font size, and style of the text on your Matplotlib figure.
Here’s how I do it:
import matplotlib.pyplot as plt
# Create a figure with custom size
fig, ax = plt.subplots(figsize=(8, 5))
# Plot data
ax.plot([1, 2, 3, 4, 5], [5, 7, 9, 6, 8], color='red', marker='o')
ax.set_xlabel('Time (Months)')
ax.set_ylabel('Performance Score')
# Add custom title using fig.text()
fig.text(0.5, 1.02, 'Employee Performance Analysis - 2025',
ha='center', fontsize=20, fontweight='bold', color='darkblue')
plt.tight_layout()
plt.show()You can refer to the screenshot below to see the output.

Here, the coordinates (0.5, 1.02) represent the position of the title relative to the figure (centered horizontally, slightly above the top).
This method is perfect when you’re designing dashboards or publication-quality charts where precise control over text placement is important.
Method 5 – Customize Title Font Size and Style Using fontdict
Matplotlib also allows you to pass a dictionary of font properties using the fontdict parameter.
This is one of my favorite methods because it keeps the code clean and readable while offering flexibility to customize multiple font attributes at once.
Here’s an example in Python:
import matplotlib.pyplot as plt
# Create a figure and axis
fig, ax = plt.subplots()
# Plot data
ax.plot([1, 2, 3, 4], [25, 30, 28, 35], color='teal', marker='^')
# Define font dictionary
title_font = {
'fontsize': 20,
'fontweight': 'bold',
'color': 'navy',
'family': 'serif'
}
# Apply fontdict to titles
ax.set_title('Average Temperature by Season', fontdict=title_font)
fig.suptitle('Weather Trends in the USA (2025)', fontdict=title_font)
plt.show()The fontdict parameter is especially useful when you want to apply consistent styling across multiple figures. You can even define your font dictionary once and reuse it in different Python scripts.
Bonus Tip – Dynamically Adjust Title Font Size Based on Figure Size
A trick I learned over the years is to dynamically scale the title font size based on the figure size. This ensures that large figures have proportionally larger titles.
Here’s a simple Python snippet that demonstrates this:
import matplotlib.pyplot as plt
# Create a large figure
fig, ax = plt.subplots(figsize=(12, 6))
# Plot data
ax.plot(range(10), [i**2 for i in range(10)], color='brown')
# Dynamically adjust font size
title_size = fig.get_size_inches()[0] * 1.5
fig.suptitle('Dynamic Font Size Example', fontsize=title_size, fontweight='bold')
plt.show()This method automatically scales your title font size relative to the figure width, which is great for responsive visualizations or automated report generation.
Common Mistakes to Avoid
- Forgetting tight_layout() – Titles may overlap with subplots if you don’t adjust the layout.
- Using too large font sizes – Oversized titles can make your chart look unbalanced.
- Mixing font styles – Keep your font family consistent for a professional look.
So, these are the different ways you can change the Matplotlib figure title font size in Python. Personally, I use plt.suptitle() for quick adjustments and rcParams for consistent styling across multiple plots.
Remember, a well-styled title not only improves readability but also helps your audience instantly understand the purpose of your chart.
Whether you’re preparing a business presentation, a Python data analysis report, or a dashboard for your team, these techniques will help you make your Matplotlib visualizations look clean and professional.
You may also like to read other articles on Matplotlib:
- How to Save Matplotlib Chart as PNG
- Change the Pie Chart Title Font Size in Matplotlib
- Change Bar Chart Title Font Size in Matplotlib
- Change the Colorbar Title Font Size in Matplotlib

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.