Ferramentas de Desenvolvimento

Gerador de arquivos fictícios

Gere arquivos fictícios com um tamanho exato em bytes — imagens, áudio, vídeo, PDF, texto e mais — totalmente no seu navegador. Útil para testar os limites de tamanho de formulários de upload. Os arquivos nunca são enviados a um servidor.


Formato

Formato Extensão Tipo MIME Limite da especificação Observações
Texto (TXT) .txt text/plain Praticamente ilimitado Preenchido com texto legível repetido
CSV .csv text/csv Praticamente ilimitado Dados de tabela fictícios com linha de cabeçalho
JSON .json application/json Praticamente ilimitado Preenchido em um único campo de string
Binário (BIN) .bin application/octet-stream Praticamente ilimitado Bytes arbitrários repetindo de 0x00 a 0xFF
Imagem (PNG) .png image/png Praticamente ilimitado Imagem válida de 1x1 + bloco de preenchimento
Áudio (WAV) .wav audio/wav 4 GiB Dados PCM silenciosos (realmente reproduzíveis)
Vídeo (MP4) .mp4 video/mp4 Praticamente ilimitado Gravação real em navegadores compatíveis; placeholder com estrutura válida nos demais
Vídeo (WebM) .webm video/webm Praticamente ilimitado Animação de poucos segundos realmente gravada (apenas em navegadores compatíveis)
PDF .pdf application/pdf Praticamente ilimitado PDF válido de uma página em branco
ZIP .zip application/zip 4 GiB Arquivo não compactado com uma única entrada

Dicas para gerar arquivos fictícios

  • A lógica de validação dos formulários de upload costuma verificar separadamente três coisas: extensão, tipo MIME e tamanho do arquivo. Como esta ferramenta gera arquivos válidos em tudo o mais, você pode testar apenas o limite de tamanho de forma isolada.
  • Um limite de "até 10MB" pode significar 10.000.000 bytes (106) em uma implementação e 10.485.760 bytes (220) em outra. O seletor de unidade permite escolher os dois critérios, para testar tanto o valor exato do limite quanto um byte acima dele.
  • Chrome e Edge transmitem os dados diretamente para a unidade escolhida, então arquivos com dezenas de gigabytes podem ser gerados sem sobrecarregar a memória. Firefox e Safari montam o arquivo na memória primeiro, o que impõe um limite prático de tamanho.
  • Em navegadores compatíveis, o vídeo (MP4/WebM) é gravado de verdade como alguns segundos de animação usando o codificador embutido do navegador, por isso ele realmente é reproduzido ao ser aberto. Todo o restante — o preenchimento que compõe a maior parte do arquivo, e o conteúdo dos demais formatos de imagem e áudio — é fictício. O objetivo é apenas testar a validação de tamanho, extensão e tipo MIME.

Perguntas frequentes

Não. Todo o processo de geração ocorre dentro do seu navegador, e o conteúdo nunca é enviado a um servidor.

Sim — em navegadores compatíveis (como o Chrome), o codificador embutido do navegador grava de verdade alguns segundos de animação, então ele é reproduzido ao ser aberto. A maior parte do arquivo é preenchimento adicionado para atingir o tamanho exato. O MP4 recorre automaticamente a um placeholder com estrutura válida em navegadores que não oferecem suporte à gravação, portanto a geração em si nunca falha. O WebM só pode ser selecionado em navegadores que oferecem suporte à gravação.

Porque, em ambos os formatos, o campo que registra o tamanho do arquivo é fixado pela especificação em 32 bits (no máximo cerca de 4,29 GB). Essa não é uma limitação da nossa implementação, mas sim um limite da própria especificação do formato.

TXT, CSV, JSON, BIN, PNG, PDF, MP4 e WebM não têm limite superior na especificação do formato, então, com a versão mais recente do Chrome ou Edge (que oferecem suporte à escrita direta no disco), é possível gerar arquivos extremamente grandes.
ツールくん

Curiosidade — Onde termina o "válido" e começa o "corrompido"

A maioria dos formatos de arquivo reserva regiões que o analisador (parser) tem permissão para pular: os blocos desconhecidos do PNG, a caixa free do MP4 e o elemento Void do WebM são exemplos disso. Eles foram projetados desde o início como espaço reservado para extensões futuras que os analisadores atuais devem ignorar, portanto preenchê-los nunca corrompe o arquivo.

No caso do vídeo, tornamos a reprodução realmente possível colocando imagens reais antes do preenchimento. Escrever manualmente a codificação em nível de bits de um codec é algo cuja correção é difícil de garantir, então, em vez disso, deixamos que o próprio codificador embutido do navegador (a API MediaRecorder) grave alguns segundos de uma animação em canvas, adicionando o preenchimento depois. É uma forma de conciliar "sempre retornar um arquivo garantidamente válido" com "o usuário realmente quer ver um vídeo".

Curiosamente, um arquivo ZIP é projetado de forma que basta ler o "diretório central" no final para conhecer toda a lista de conteúdo. Diz-se que isso é um resquício da era das fitas magnéticas, quando a leitura era feita a partir do final, e ainda hoje é o motivo pelo qual é possível extrair rapidamente um único arquivo de um ZIP enorme.