OpenAI API Image Token Counter
A comprehensive Python package for calculating token costs when using images with OpenAI's Vision API. Supports all OpenAI vision models including GPT-4.1, GPT-4o, o-series, and GPT Image 1.
🚀 Features
- Complete Model Support: All OpenAI vision models (GPT-4.1, GPT-4o, o-series, GPT Image 1)
- Accurate Calculations: Implements official OpenAI token calculation algorithms
- Flexible Input: Calculate from file paths, image dimensions, or raw image data
- Batch Processing: Process multiple images or entire directories
- CLI Interface: Easy-to-use command-line tool
- Cost Estimation: Estimate USD costs based on token pricing
- Configurable: Easy-to-update configuration via MDX file
- Comprehensive Testing: Full test suite covering all documented examples
📦 Installation
pip install openai-image-token-counter
Development Installation
git clone https://github.com/edujbarrios/openai-image-token-counter.git
cd openai-image-token-counter
pip install -e .
🏃 Quick Start
Python API
from openai_image_token_counter import OpenAIImageTokenCalculator, ModelType, DetailLevel
# Initialize calculator
calculator = OpenAIImageTokenCalculator()
# Calculate tokens from image file
tokens = calculator.calculate_tokens_from_file(
"my_image.jpg",
model=ModelType.GPT_4O,
detail=DetailLevel.HIGH
)
print(f"Tokens required: {tokens}")
# Calculate from dimensions
tokens = calculator.calculate_tokens(
width=1024,
height=1024,
model="gpt-4o"
)
print(f"Tokens for 1024x1024 image: {tokens}")
# Batch processing for different images
image_files = ["img1.jpg", "img2.png", "img3.gif"]
token_counts = calculator.calculate_batch_tokens(
image_files,
model=ModelType.GPT_4O
)
# OPTIMIZED: Batch processing for same-resolution images (much faster!)
batch_result = calculator.calculate_batch_same_resolution(
count=1000, # Number of images
width=1024, # All images are 1024px wide
height=1024, # All images are 1024px tall
model="gpt-4o"
)
print(f"1000 images at 1024x1024: {batch_result['total_tokens']:,} tokens")
print(f"Per image: {batch_result['tokens_per_image']} tokens")
# Batch processing with cost estimation
cost_result = calculator.calculate_batch_same_resolution_with_cost(
count=500,
width=512,
height=512,
model="gpt-4o",
input_token_price_per_million=5.0 # $5 per million tokens
)
print(f"Total cost for 500 images: ${cost_result['total_cost_usd']:.2f}")
Command Line Interface
# Calculate tokens for a single image
openai-image-tokens image.jpg --model gpt-4o
# Process multiple images
openai-image-tokens *.jpg --model gpt-4.1-mini --detail low
# Process entire directory
openai-image-tokens --directory ./images --model gpt-4o --recursive
# Calculate from dimensions
openai-image-tokens --dimensions 1920 1080 --model o4-mini
# Estimate costs
openai-image-tokens image.jpg --model gpt-4o --price-per-million 5.0
# List supported models
openai-image-tokens --list-models
🧮 Supported Models
32px Patch Models (GPT-4.1/o4-mini family)
gpt-5-mini(multiplier: 1.62)gpt-5-nano(multiplier: 2.46)gpt-4.1-mini(multiplier: 1.62)gpt-4.1-nano(multiplier: 2.46)o4-mini(multiplier: 1.72)
512px Tile Models (GPT-4o/o-series family)
gpt-5(base: 70, tile: 140)gpt-5-chat-latest(base: 70, tile: 140)gpt-4o(base: 85, tile: 170)gpt-4.1(base: 85, tile: 170)gpt-4.5(base: 85, tile: 170)gpt-4o-mini(base: 2833, tile: 5667)o1(base: 75, tile: 150)o1-pro(base: 75, tile: 150)o3(base: 75, tile: 150)computer-use-preview(base: 65, tile: 129)
Special Models
gpt-image-1(with fidelity bonuses)
🧪 Calculation Examples
Example 1: 1024x1024 Image (GPT-4o)
calculator = OpenAIImageTokenCalculator()
tokens = calculator.calculate_tokens(1024, 1024, "gpt-4o", DetailLevel.HIGH)
# Result: 765 tokens
# Calculation: 4 tiles of 512px → 85 + (4 × 170) = 765
Example 2: 1800x2400 Image (GPT-4.1-mini)
tokens = calculator.calculate_tokens(1800, 2400, "gpt-4.1-mini")
# Result: 2352 tokens
# Calculation: Scaled to 1452 base tokens × 1.62 multiplier = 2352
Example 3: Batch Processing for Dataset
# Perfect for ML datasets where all images are preprocessed to same size
from openai_image_token_counter import calculate_batch_same_resolution, quick_batch_cost_estimate
# Calculate for 10,000 training images at 224x224
result = calculate_batch_same_resolution(10000, 224, 224, "gpt-4o")
print(f"Training set: {result['total_tokens']:,} tokens")
# Estimate cost for inference on 50,000 images at 512x512
cost_info = quick_batch_cost_estimate(50000, 512, 512, "gpt-4o", 5.0)
print(f"Inference cost: ${cost_info['total_cost_usd']:.2f}")
Example 4: GPT Image 1 with High Fidelity
from openai_image_token_counter import FidelityLevel
tokens = calculator.calculate_tokens(
1024, 2048,
"gpt-image-1",
fidelity=FidelityLevel.HIGH
)
# Includes fidelity bonus for rectangular image
Example 5: Comparing Costs Across Models
# Compare costs for the same batch across different models
models = ["gpt-4o", "gpt-4.1-mini", "o4-mini"]
image_count = 1000
width, height = 1024, 1024
for model in models:
result = calculate_batch_same_resolution(image_count, width, height, model)
print(f"{model}: {result['total_tokens']:,} tokens ({result['tokens_per_image']} per image)")
📊 CLI Usage Examples
Basic Usage
# Single image
openai-image-tokens photo.jpg --model gpt-4o
Batch Processing
# Multiple specific files
openai-image-tokens img1.jpg img2.png img3.gif --model gpt-4o
# Entire directory
openai-image-tokens --directory ./photos --model gpt-4o --recursive
# Specific file types
openai-image-tokens --directory ./photos --extensions .jpg .png --model gpt-4o
# OPTIMIZED: Same resolution batch (much faster!)
openai-image-tokens --batch-same-resolution 1000 1024 1024 --model gpt-4o
# Large batch with different models
openai-image-tokens --batch-same-resolution 5000 512 512 --model gpt-4.1-mini
openai-image-tokens --batch-same-resolution 10000 256 256 --model o4-mini
Output Formats
# JSON output
openai-image-tokens image.jpg --model gpt-4o --format json
# CSV output
openai-image-tokens --directory ./images --format csv --output results.csv
# Detailed table
openai-image-tokens image.jpg --model gpt-4o --verbose
Cost Estimation
# Estimate costs (price per million tokens)
openai-image-tokens image.jpg --model gpt-4o --price-per-million 5.0
# Batch cost estimation
openai-image-tokens --directory ./images --model gpt-4o --price-per-million 5.0
🔄 Model Algorithm Overview
32px Patch Models
- Calculate patches:
ceil(width/32) × ceil(height/32) - If > 1536 patches, scale down maintaining aspect ratio
- Apply model-specific multiplier
512px Tile Models
- Low detail: Return base tokens only
- High detail:
- Scale to fit 2048×2048 if needed
- Scale shortest side to 768px
- Count 512px tiles
- Calculate:
base_tokens + (tiles × tile_tokens)
GPT Image 1
- Similar to 512px tile models but shortest side scaled to 512px
- High fidelity adds bonus: 4160 (square) or 6240 (rectangular)
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Based on official OpenAI Vision API documentation
- Calculation algorithms verified against OpenAI's examples
- Inspired by the need for accurate cost estimation in AI applications
Note: This package implements the token calculation algorithms as documented by OpenAI. Always verify costs with the official OpenAI pricing page before making financial decisions.
Author
Eduardo J. Barrios - https://edujbarrios.com
Release files for openai-image-token-counter 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openai_image_token_counter-1.0.0.tar.gz | 23.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openai_image_token_counter-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.9 kB
Release files / openai_image_token_counter-1.0.0.tar.gz
| Download URL | openai_image_token_counter-1.0.0.tar.gz |
|---|---|
| Size | 23.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef62f8d5a7048d3728c0eee5e476d05932c8a78a4701d8ffb667aa29835b2ab3
|
|
BLAKE2b-256 checksum How to use checksums |
2631ec53ba422ddb50dad3c2c4aefebd5f09a6b7cb997004f26ffe8906859403
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / openai_image_token_counter-1.0.0-py3-none-any.whl
| Download URL | openai_image_token_counter-1.0.0-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
23a1d053f9b359ecd4b8742d0799316a24ff102cded1c4e430ddaf5d932f4418
|
|
BLAKE2b-256 checksum How to use checksums |
1687560cd6ede53ae03bf3b25afa9f738018c26cd138e9982b7ec5611dfd512b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|