Pinterest CSV: title 100, description 500 characters, pre-upload check

Pinterest's bulk CSV allows titles up to 100 characters and descriptions up to 500. Check every row in Python before you upload 200 Sume-rendered Pins.

5 min readSume
All posts

In a Pinterest bulk CSV, a title can be at most 100 characters and a description at most 500, and one upload holds up to 200 Pins. Check each row before upload, because one over-long row costs you a round trip after Sume has already rendered the whole batch.

What are the row limits?

The page states these limits for the CSV.

Pinterest CSV row limits (read 2026-10-05)
FieldLimit
Title100 characters maximum
Description500 characters maximum
Rows per upload200

How do I lint a CSV?

The script reads rows from text, so it runs as written. Replace the string with open(path, newline='') for a real file.

import csv, io

data = "Title,Description\nShort,ok\n" + "T" * 101 + "," + "d" * 501 + "\n"
rows = list(csv.DictReader(io.StringIO(data)))
print(len(rows), "rows;", "over 200!" if len(rows) > 200 else "row count ok")
for n, r in enumerate(rows, start=2):
    if len(r["Title"]) > 100:
        print("line", n, "title too long:", len(r["Title"]))
    if len(r["Description"]) > 500:
        print("line", n, "description too long:", len(r["Description"]))

Where does the text come from?

If you write titles with a model, give it the limits in the prompt, then still lint the result. The render side is independent: a Sume trim job is $0.02 per the docs, and each job needs its own Idempotency-Key, so a re-run of the batch reuses finished work instead of paying twice.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume