When working with Python Turtle graphics, adding text can transform your simple drawings into informative visualizations. I’ve been using the Turtle module for years, and manipulating text fonts is one of my favorite ways to enhance projects.
In this tutorial, I’ll walk you through everything you need to know about using fonts in Python Turtle, from changing font styles and sizes to creating eye-catching text effects.
Let’s dive in and explore how to make your Turtle text stand out!
Understand Python Turtle’s Write Function
The foundation of adding text in Turtle graphics is the write() function in Python. I use this function regularly when I need to add labels, instructions, or decorative text to my Turtle projects.
Here’s the basic syntax:
turtle.write(text, move=False, align="left", font=("Arial", 12, "normal"))The parameters are:
text: The string you want to displaymove: Whether to move the turtle to the end of the text (default is False)align: Text alignment (“left”, “center”, or “right”)font: A tuple containing font face, size, and style
Let’s start with a simple example:
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
# Basic text with default font
t.write("Hello from Python Turtle!")
turtle.done()Change Python Turtle Font Style
I’ve found that the right font style can completely change how your project looks. The font style parameter accepts three values: “normal”, “bold”, and “italic”.
Here’s how to use different font styles:
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.penup()
# Normal font style
t.goto(-150, 100)
t.write("Normal Text", font=("Arial", 16, "normal"))
# Bold font style
t.goto(-150, 50)
t.write("Bold Text", font=("Arial", 16, "bold"))
# Italic font style
t.goto(-150, 0)
t.write("Italic Text", font=("Arial", 16, "italic"))
# Bold and italic together
t.goto(-150, -50)
t.write("Bold Italic", font=("Arial", 16, "bold italic"))
turtle.done()You can see the output in the screenshot below.

Check out Python Turtle Polygon
Python Turtle Font Size
When I’m creating educational graphics for my students, adjusting font size is crucial for readability. Here’s how I manipulate font sizes for different purposes:
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.penup()
# Small font for details
t.goto(-150, 100)
t.write("Small text (8px)", font=("Arial", 8, "normal"))
# Medium font for regular content
t.goto(-150, 50)
t.write("Medium text (16px)", font=("Arial", 16, "normal"))
# Large font for headings
t.goto(-150, 0)
t.write("Large text (24px)", font=("Arial", 24, "normal"))
# Extra large font for titles
t.goto(-150, -50)
t.write("Title (36px)", font=("Arial", 36, "bold"))
turtle.done()You can see the output in the screenshot below.

Read Python Turtle Window
Change Python Turtle Font Family
The font family determines the overall look of your text. While Arial is the default, I often experiment with different fonts to match my project’s theme.
Here’s how to use different font families:
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.penup()
# Common font families
fonts = ["Arial", "Courier", "Times New Roman", "Verdana", "Georgia", "Comic Sans MS"]
y_position = 150
for font in fonts:
t.goto(-150, y_position)
t.write(f"This is {font}", font=(font, 16, "normal"))
y_position -= 50
turtle.done()You can see the output in the screenshot below.

Note that the availability of fonts depends on your operating system. I always test my code on different systems to ensure the fonts display correctly.
Read Python Turtle Random
Create a US States Labeling Application
Let’s put our font knowledge to practical use with a US-themed example. Here’s a simple application that labels a few major US cities with different font styles:
import turtle
screen = turtle.Screen()
screen.title("US Major Cities")
screen.setup(800, 600)
# Optional: You could add a US map background image here
# screen.bgpic("us_map.gif")
t = turtle.Turtle()
t.penup()
t.hideturtle()
t.speed(0)
# Dictionary of cities with coordinates and population category
cities = {
"New York": {"pos": (100, 50), "pop": "large"},
"Los Angeles": {"pos": (-250, 0), "pop": "large"},
"Chicago": {"pos": (0, 80), "pop": "large"},
"Houston": {"pos": (-50, -50), "pop": "large"},
"Phoenix": {"pos": (-150, -20), "pop": "medium"},
"Philadelphia": {"pos": (120, 60), "pop": "medium"},
"San Antonio": {"pos": (-70, -70), "pop": "medium"},
"Austin": {"pos": (-60, -90), "pop": "small"}
}
# Label cities with different fonts based on population
for city, info in cities.items():
t.goto(info["pos"])
# Different font styling based on city size
if info["pop"] == "large":
t.write(city, align="center", font=("Arial", 18, "bold"))
t.dot(10, "red")
elif info["pop"] == "medium":
t.write(city, align="center", font=("Arial", 14, "normal"))
t.dot(7, "blue")
else:
t.write(city, align="center", font=("Arial", 12, "italic"))
t.dot(5, "green")
# Add a title
t.goto(0, 250)
t.write("Major US Cities", align="center", font=("Times New Roman", 24, "bold"))
# Add a legend
t.goto(-300, -200)
t.write("Legend:", font=("Arial", 14, "bold"))
t.goto(-300, -220)
t.write("● Large Cities", font=("Arial", 12, "normal"))
t.goto(-300, -240)
t.write("● Medium Cities", font=("Arial", 12, "normal"))
t.goto(-300, -260)
t.write("● Small Cities", font=("Arial", 12, "normal"))
turtle.done()Check out Python Turtle Hide
Format Text with Colors
I often combine font styling with colors to create even more visually appealing text. Here’s how to add color to your text:
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.penup()
t.hideturtle()
# Function to write colored text
def write_colored_text(text, position, color, font_settings):
t.goto(position)
t.color(color)
t.write(text, align="center", font=font_settings)
# US-themed colored text example
write_colored_text("Stars and Stripes", (0, 100), "blue", ("Arial", 24, "bold"))
write_colored_text("Land of Liberty", (0, 50), "red", ("Times New Roman", 20, "italic"))
write_colored_text("United States of America", (0, 0), "navy", ("Georgia", 18, "bold"))
write_colored_text("E Pluribus Unum", (0, -50), "darkgreen", ("Courier", 16, "normal"))
turtle.done()Best Practices for Python Turtle Font Usage
After years of working with Turtle graphics, I’ve developed these best practices:
- Readability first: Choose fonts that are easy to read at their intended size
- Test on different systems: Font availability varies between operating systems
- Be consistent: Use 2-3 font families maximum in a single project
- Create a hierarchy: Use different sizes and styles to indicate importance
- Consider your audience: Larger fonts for children or educational content
- Position carefully: Leave enough space around text for readability
Troubleshoot Common Font Issues
If you encounter issues with fonts in your Turtle projects, try these solutions:
- Font not showing correctly? Stick to system fonts like Arial, Times New Roman, or Courier
- Text too small or large? Remember that screen sizes vary – test on different displays
- Text positions inconsistent? Use alignment parameters and the penup() method
- Need to clear text? Use clear() method to remove all drawings, including text
Create a Custom Font Class
For more complex projects, I often create a custom class to manage text styles:
import turtle
class TurtleText:
def __init__(self, screen):
self.screen = screen
self.text_turtle = turtle.Turtle()
self.text_turtle.hideturtle()
self.text_turtle.penup()
self.text_turtle.speed(0)
def write_heading(self, text, position):
self.text_turtle.goto(position)
self.text_turtle.color("navy")
self.text_turtle.write(text, align="center", font=("Arial", 24, "bold"))
def write_subheading(self, text, position):
self.text_turtle.goto(position)
self.text_turtle.color("darkblue")
self.text_turtle.write(text, align="center", font=("Arial", 18, "italic"))
def write_body(self, text, position):
self.text_turtle.goto(position)
self.text_turtle.color("black")
self.text_turtle.write(text, align="left", font=("Arial", 12, "normal"))
# Usage example
screen = turtle.Screen()
text = TurtleText(screen)
text.write_heading("US National Parks", (0, 150))
text.write_subheading("Exploring America's Natural Wonders", (0, 100))
text.write_body("- Yellowstone National Park (Wyoming)", (-150, 50))
text.write_body("- Grand Canyon National Park (Arizona)", (-150, 20))
text.write_body("- Yosemite National Park (California)", (-150, -10))
text.write_body("- Great Smoky Mountains (Tennessee/N. Carolina)", (-150, -40))
turtle.done()I’ve found that Python Turtle’s font capabilities are more than sufficient for most educational and creative projects. With the right combination of font family, size, style, and color, you can create professional-looking text elements that enhance your Turtle graphics.
Whether you’re creating educational tools, data visualizations, or just having fun with Python, mastering text styling will take your Turtle projects to the next level.
Remember that the most effective text is both functional and aesthetically pleasing; it should convey information clearly while complementing your overall design. Happy coding!
You may like to read:

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.