Renombrar imágenes por patrón y numeración en lote
Convierta una lista ordenada de nombres de imágenes en una secuencia clara y coherente antes de renombrar, cargar, archivar o publicar los archivos reales.
Ejecutar — gratis
Indique un patrón con un marcador de contador, elija el número inicial y obtenga una correspondencia explícita entre el nombre original y el nuevo. La herramienta puede conservar cada extensión original, reutilizar el nombre base y rellenar los números para que se ordenen de forma natural. Solo calcula nombres: nunca lee, carga, mueve ni modifica una imagen, por lo que usted puede revisar fácilmente los cambios propuestos antes de operar sobre el sistema de archivos.
Cree un patrón claro para nombrar imágenes
Un buen renombrado por lotes comienza con un patrón que describa la colección, no la cámara o el teléfono que la creó. Use {counter} donde deba aparecer el número de secuencia, por ejemplo producto-rojo-{counter}{ext}. Use {counter:3} si necesita una anchura mínima fija, que generará 001, 002 y 003. La anchura puede ser de uno a veinte dígitos y un número que ya sea más largo nunca se recorta. Añada {ext} para conservar exactamente la extensión de cada archivo de origen, incluidas sus mayúsculas, o use {name} si el nombre base original debe formar parte del resultado. Un patrón puede contener el mismo marcador varias veces. El texto literal no cambia. Como el resultado es un nombre de archivo y no una ruta, se rechazan las barras normales e inversas generadas. Así se evita que un patrón cambie de directorio de forma inadvertida. Revise la correspondencia devuelta antes de aplicarla con un gestor de archivos, un script, una canalización de recursos o una biblioteca multimedia.
Controle el orden, la numeración y los duplicados
La lista de entrada define el orden. El primer archivo recibe el valor de start, el segundo recibe el entero siguiente y el proceso continúa sin ordenar ni interpretar fechas ocultas en los nombres. El resultado es previsible cuando la lista ya representa el orden de una sesión, una hoja de cálculo, una selección o una secuencia editorial. El valor inicial predeterminado es 1, aunque se aceptan 0 y otros enteros seguros no negativos para sistemas con numeración desde cero. Todos los nombres generados se comprueban para detectar colisiones. Un patrón sin contador es válido si otros marcadores producen nombres distintos; por ejemplo, {name}-aprobado{ext} suele conservar la unicidad. Sin embargo, si ese patrón produce el mismo nombre para dos imágenes, la solicitud falla e indica que falta un contador. También se verifican los patrones que sí lo incluyen, pues entradas repetidas o un patrón que descarte diferencias relevantes aún podrían causar una colisión. Si la validación falla, no se devuelve una correspondencia parcial, de modo que una respuesta correcta siempre representa un plan completo.
Use la correspondencia con seguridad en un flujo real
Esta capacidad calcula un plan de renombrado y, de forma deliberada, no toca los archivos. Cada resultado empareja el nombre original con el reemplazo propuesto para que una persona o un programa posterior inspeccione todos los cambios. Esta separación resulta útil para fotógrafos que preparan hojas de contacto, equipos de comercio electrónico que normalizan recursos, desarrolladores que organizan datos de prueba y archiveros que crean secuencias estables. Conserve {ext} cuando el lote mezcle JPEG, PNG, WebP o extensiones con distintas mayúsculas; el marcador copia el sufijo de cada origen en vez de imponer un formato. Recuerde que renombrar no convierte los datos de imagen, por lo que cambiar literalmente la extensión tampoco cambia el formato interno. Las entradas deben ser nombres, no rutas, y tienen un límite de 255 caracteres. Cada lote admite hasta 10,000 elementos. Para ejecutar el cambio, consuma la correspondencia con una herramienta que detecte destinos existentes y use dos etapas cuando se solapen nombres antiguos y nuevos. La solicitud de API cuesta $0.002. La misma entrada siempre produce el mismo resultado, sin cargas, red, azar ni dependencia temporal.
Qué puede hacer con ella
Ordenar una sesión fotográfica
Convierta nombres generados por la cámara en una serie ordenada y rellena, conservando la extensión original de cada imagen.
Normalizar imágenes de productos
Cree nombres previsibles para los recursos de una tienda a partir de una lista ordenada de ángulos y variantes.
Previsualizar un renombrado de archivo
Genere y revise una correspondencia completa entre nombres anteriores y nuevos antes de modificar documentos archivados.
Preguntas frecuentes
¿Qué marcadores de contador se admiten?
Use {counter} para un número sin relleno o {counter:width}, como {counter:4}, para aplicar ceros hasta una anchura mínima.
¿Cómo conservo la extensión de cada imagen?
Incluya {ext} en el patrón. Copia la última extensión con el punto inicial y el uso original de mayúsculas.
¿La herramienta renombra o carga mis imágenes?
No. Solo devuelve una correspondencia determinista entre cada nombre original y el nuevo nombre propuesto.
¿Qué ocurre si dos nombres nuevos son idénticos?
La solicitud completa falla. Si el patrón no contiene un contador, el error le indica expresamente que debe añadirlo.
¿Cuánto cuesta la solicitud de API?
Cada solicitud cuesta $0.002, independientemente de que el contador comience en cero o utilice relleno.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/image/batch-rename-pattern \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}'const res = await fetch("https://api.kit.forhosting.com/image/batch-rename-pattern", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/batch-rename-pattern",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/batch-rename-pattern", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/batch-rename-pattern", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.batch_rename_pattern",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 10000 |
max_filename_chars | 255 |
max_pattern_chars | 255 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |