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

O que é um gerador de arquivos fictícios

Ao criar uma função de upload, é preciso confirmar se os limites de tamanho e as verificações de extensão realmente funcionam como esperado. Para isso, é necessário um arquivo que seja "exatamente de um determinado número de bytes, mas ainda válido para o seu formato" — e esse tipo de arquivo raramente está à mão. Esta ferramenta gera texto, imagens, áudio, vídeo, PDFs, arquivos ZIP e muito mais, cada um com o tamanho exato solicitado.

Todo arquivo gerado é composto por dados válidos de acordo com a especificação do seu formato. Muitos formatos reservam áreas que um leitor pode ignorar sem problema, e é justamente nessas áreas que a ferramenta insere o preenchimento para ajustar o tamanho, de modo que nenhum erro ocorre ao abrir o arquivo. Todo o processamento acontece dentro do navegador, e nada é enviado a um servidor. Vale notar que WAV e ZIP têm um limite de 4 GiB definido pela própria especificação do formato.

Como gerar um arquivo fictício

  1. Escolha o formato do arquivo Selecione o formato aceito pelo que você quer testar. Para testar a validação de extensão ou tipo MIME, escolha exatamente esse formato.
  2. Informe o tamanho Digite um número e uma unidade. Se o limite testado for "10MB", lembre-se de que o limite muda conforme a interpretação seja 10.000.000 ou 10.485.760 bytes.
  3. Defina o nome do arquivo Você pode incluir a extensão no nome escolhido. Altere este campo se quiser testar regras de rejeição baseadas no nome.
  4. Gere e baixe o arquivo Ao clicar em "Gerar", o arquivo é criado. Tamanhos maiores demoram mais, e você pode cancelar o processo a qualquer momento enquanto ele estiver em andamento.

Dicas para aproveitar melhor

  • 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.

Usos para arquivos fictícios

Teste de valores-limite em uploads

Crie um arquivo exatamente no limite e outro um byte acima para testar os dois. Assim você confirma se a mensagem de erro aparece exatamente onde a especificação prevê.

Verificação da checagem de extensão e tipo MIME

Gere um formato permitido e outro proibido e envie ambos, para identificar qual dos dois critérios está realmente causando a rejeição.

Verificação do comportamento em transferências grandes

Com arquivos de vários gigabytes, você pode testar se o indicador de progresso, os tempos limite e a retomada após interrupção funcionam corretamente, sem precisar de dados reais.

Estimativa de armazenamento e largura de banda

Colocar de fato um arquivo do tamanho esperado permite medir na prática o consumo de armazenamento e o tempo de transferência.

Termos sobre validação de arquivos

Tipo MIME
Uma string que indica o tipo de um arquivo, escrita como image/png, comumente usada para decidir se um upload é permitido.
Teste de valores-limite
Um método de teste que verifica o ponto exato de um limite junto com os valores logo antes e logo depois dele, já que é ali que os defeitos mais aparecem.
Preenchimento
Dados sem significado adicionados apenas para atingir o tamanho desejado. São colocados em áreas que o formato permite ignorar, então o arquivo permanece íntegro.
GiB e GB
Um GiB equivale a 1.073.741.824 bytes, enquanto um GB equivale a 1.000.000.000 bytes. Essa diferença é uma causa comum de interpretações divergentes sobre limites de tamanho.
Escrita em fluxo (streaming)
Um método que grava os dados no destino aos poucos, permitindo que até arquivos muito grandes sejam processados sem carregar tudo na memória de uma vez.

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.
Tool-kun

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.