Overview
This guide will focus on getting the most out of an SD card with CircuitPython. You might be building a project to that needs to store some bitmaps for a digital picture frame, or MP3 files for a tiny audio player. So you use a microcontroller board, a decent SD card and a TFT display. Unfortunately the result can feel a little sluggish. It works, but the images load a little slowly. Or the songs play, but displaying an index of all the song names takes longer than expected. Or you're logging sensor data as fast as it comes in. A model rocket capturing every reading on the way up, and you discover the SD card writes are taking too long and you can't record all the data quickly enough to keep pace. You hope there must be a way to make things go faster.
This guide will start with the fastest setups available on today's Adafruit boards, and then show the performance degradation as you vary each of these factors:
Unlike most guides, which build up to the best setup, this one leads with it. SD card activity can be divided up into two broad categories:
- bulk media read/write (bitmap images, MP3s, GIFs)
- capturing a lot of small data writes quickly (sensor data logging)
It turns out you would use different hardware for each of these use cases:
-
bulk media with a Feather ESP32-S3 with a SDIO breakout board
- 7 MB/s reads (3x faster than RP2350)
- 4.5 MB/s writes (2x faster than RP2350)
-
small data writes with a Metro RP2350 using SPI
- 2,588 lines per second (1.7x faster than ESP32-S3)
Page last edited June 03, 2026
Text editor powered by tinymce.