Private by design. Processed in your browser on your device. No account required. How it works
Private file preflight

Check My File

Understand the file before you change it. Check the real format, useful properties, likely compatibility, and the safest next step without uploading or modifying the file.

Checked on your device No upload Original stays unchanged

Choose any common file

Images, PDFs, audio, video, text, ZIP archives, and modern Office files are checked when the browser can read them.

or drop one file here
{{ selectedFileName }}
{{ report ? report.file.sizeLabel : 'Preparing file details…' }}
{{ statusMessage }} {{ progress }}%
No personal file handy?
Samples are generated in this browser and are never downloaded to your device.
Will this upload?
Copy the rules from the website or form you plan to use. Leave any rule blank when it does not apply. Everything stays in this tab.
Compatibility Coach

Where will you use this file?

Rules only—no file data

Choose a destination to load its documented checks. Every preset links to its official source, shows when it was reviewed, and separates requirements from recommendations.

{{ group.label }}
Something else
Sourced destination preset

{{ selectedDestinationProfile.preset.label }}

Reviewed {{ selectedDestinationProfile.preset.reviewedOn }}
Review again by {{ selectedDestinationProfile.preset.nextReviewOn }}

{{ selectedDestinationProfile.preset.summary }}

You changed the sourced values. The official links describe the original preset; the checker now uses your edited values as custom rules.
  • {{ rule.kind }} {{ rule.label }} checked here read and check manually

    {{ rule.description }}

    Official source: {{ source.publisher }}
Limits these checks do not cover
  • {{ caveat.text }}

No acceptance guarantee. {{ selectedDestinationProfile.preset.acceptanceDisclaimer }}

Or start with a generic rule example
These examples are not destination requirements. They replace the current rules and can be changed.
File basics

Size uses decimal upload limits: 1 MB is exactly 1,000,000 bytes. Formats are checked against the detected contents, not just the file name.

Leave blank for no size limit. {{ requirementFieldError('maxSize') }}
Separate extensions with commas or spaces. {{ requirementFieldError('allowedFormats') }}
Pixel dimensions

These rules apply to images and videos. Enter only the minimums or maximums the upload form gives you.

{{ requirementFieldError(field.key) }}
Aspect ratio

Enter both sides, such as 16 and 9. Tolerance allows small crops or rounding differences.

Required ratio
{{ requirementFieldError('aspectWidth') }} {{ requirementFieldError('aspectHeight') }}
0% means an exact ratio. Maximum 50%. {{ requirementFieldError('aspectTolerance') }}
Image behavior

Use these only when the destination explicitly rejects animation or transparent pixels.

PDF rules

Custom PDF rules fail for non-PDF files. A sourced destination preset can mark a PDF-only page check as not applicable to another accepted format. Searchable text is sampled from up to five pages.

Leave blank when page count does not matter. {{ requirementFieldError('maxPdfPages') }}
{{ requirementStatusMessage }}
Read-only and local. The checker reads selected bytes and properties in this tab. It does not upload, rename, convert, repair, or save your file. A format-specific code library may download for deeper checks.

A plain-language report appears here

We will separate confirmed facts from likely clues, compare every upload rule you entered, and explain any recommendation before you open another tool.

Detected from file contents

{{ report.format.label }}

{{ report.format.evidence }}

{{ reportStatusLabel }}

What we could verify

{{ metric.label }}
{{ metric.value }}
Sample of archive entries
  • {{ entry }}

Will this upload?

Fix the highlighted upload rules The file result is paused until every entered rule is valid.
No upload rules are active. Add the limits from the form you plan to use, and this result will update without reading the file again.

Checks and cautions

{{ item.title }}{{ item.detail }}

What this check can—and cannot—tell you

A useful preflight should make its limits as clear as its findings.

Strong evidence

  • Recognized file signatures and container structures
  • Exact byte size and extension comparison
  • Properties decoded by this browser, such as dimensions or duration
  • Text found on the sampled PDF pages

Needs context

  • Whether a particular website will accept the file
  • Whether every PDF page is searchable when only five are sampled
  • Whether an uncommon codec works in another device or app
  • Whether a damaged file can be repaired safely

How to check a file before using it

Choose a file

Select one file or use a generated sample. The original stays on your device.

Read the evidence

Compare the real format, extension, useful properties, and every upload rule you entered.

Choose a safe next step

Open a recommended tool only after reviewing what it changes or removes.

Content-aware format check

Compare recognizable file signatures, the browser type, and the filename extension instead of trusting the name alone.

Useful file details

See the properties the browser can verify, such as dimensions, pages, duration, encryption, or searchable PDF text.

Capability-backed next steps

Recommendations come from the same tool capability contract used by converter pages and tests.

Requirement checks

Check common goals such as a size limit, a searchable PDF, or a broadly supported web image.

Private inspection

Analysis runs in your browser. The file is not uploaded and its contents are not recorded.

Read-only by design

The checker does not repair, convert, rename, or otherwise change the selected file.

Frequently Asked Questions

No. Inspection runs in your browser and is read-only. The file is not uploaded, renamed, converted, or saved by this tool.

A file can be renamed without converting its contents. The checker compares recognizable bytes with the extension and browser-provided type to flag likely mismatches.

It reports basic details for any selected file and can inspect additional properties for common images, PDFs, audio, and video when the browser supports that format.

It checks sampled pages for usable text. Little or no extracted text can indicate scanned pages, but mixed documents and decorative text still require a visual check.

No. It explains what could be read and recommends a compatible tool or recovery step. Keep the original file until you have verified any converted result.

No browser tool can guarantee every codec, damaged file, or unusually large document. Recommendations reflect verified tool capabilities and clearly state practical browser limits.
JPEGConvert logo

Need a hand with your file?

JPEGConvert.com keeps the workflow simple: upload, convert, and download. For the best results, start with the highest-quality source file you have.

About the team | Contact support


{{ statusMessage }}
(function() { const title = document.querySelector('h1'); const actionRegion = document.querySelector('.action-container, .action-body'); if (!title || !actionRegion || title.querySelector('.tool-hero-mark')) return; const path = window.location.pathname.replace(/\/$/, ''); if (!path || path === '/' || path.startsWith('/converters') || path === '/about' || path === '/contact' || path === '/support' || path === '/privacy-policy') { return; } const lowerKey = path.replace(/^\/(video|audio)\//, '').replace(/^\//, '').toLowerCase(); if (!lowerKey) return; let category = 'image'; if (path.startsWith('/video/')) category = 'video'; if (path.startsWith('/audio/')) category = 'audio'; const isUtility = lowerKey.includes('ascii') || lowerKey === 'check-my-file' || lowerKey.includes('resizer') || lowerKey.includes('metadata') || lowerKey.includes('compress') || lowerKey.includes('base64') || lowerKey.includes('background') || lowerKey.includes('crop') || lowerKey.includes('watermark') || lowerKey.includes('remove-pages') || lowerKey.includes('unlock') || lowerKey.includes('protect') || lowerKey.includes('editor') || lowerKey.includes('excel') || lowerKey.includes('upscale') || lowerKey.includes('merge') || lowerKey.includes('split') || lowerKey.includes('ocr') || lowerKey.includes('sign') || lowerKey.includes('trim') || lowerKey.includes('favicon'); if (category === 'image' && isUtility) category = 'tool'; const labelMap = { jpg: 'JPG', jpeg: 'JPEG', png: 'PNG', gif: 'GIF', svg: 'SVG', pdf: 'PDF', heic: 'HEIC', jfif: 'JFIF', webp: 'WEBP', bmp: 'BMP', ico: 'ICO', word: 'DOCX', docx: 'DOCX', excel: 'Excel', xls: 'XLS', xlsx: 'Excel', mp4: 'MP4', mov: 'MOV', avi: 'AVI', mp3: 'MP3', aac: 'AAC', flac: 'FLAC', wav: 'WAV', webm: 'WEBM', cr2: 'CR2', arw: 'ARW', nef: 'NEF', raf: 'RAF' }; const formatLabel = (value) => labelMap[value] || value.toUpperCase(); function getFormatMeta(key) { if (key === 'check-my-file') { return {primary: 'Check', secondary: 'File', connector: 'dot'}; } const directMatch = key.match(/^([a-z0-9]+)-to-([a-z0-9]+)$/); const convertMatch = key.match(/^convert-([a-z0-9]+)-to-([a-z0-9]+)$/); const convertToMatch = key.match(/^convert-to-([a-z0-9]+)$/); if (directMatch) { return {primary: formatLabel(directMatch[1]), secondary: formatLabel(directMatch[2]), connector: 'arrow'}; } if (convertMatch) { return {primary: formatLabel(convertMatch[1]), secondary: formatLabel(convertMatch[2]), connector: 'arrow'}; } if (convertToMatch) { return {primary: 'Any', secondary: formatLabel(convertToMatch[1]), connector: 'arrow'}; } if (key.startsWith('compress-')) { return {primary: 'Compress', secondary: formatLabel(key.replace('compress-', '')), connector: 'dot'}; } if (key.includes('base64') && key.includes('decode')) { return {primary: 'Base64', secondary: 'Decode', connector: 'dot'}; } if (key.startsWith('base64-to-')) { return {primary: 'Base64', secondary: formatLabel(key.replace('base64-to-', '')), connector: 'arrow'}; } if (key.includes('-to-base64')) { const from = key.replace('convert-', '').replace('-to-base64', ''); return {primary: formatLabel(from), secondary: 'Base64', connector: 'arrow'}; } if (key.includes('base64')) { return {primary: 'Base64', secondary: 'Encode', connector: 'dot'}; } if (key.includes('ascii')) { return {primary: 'ASCII', secondary: 'Art', connector: 'dot'}; } if (key.includes('resizer')) { return {primary: 'Resize', secondary: 'Pixels', connector: 'dot'}; } if (key.includes('remove-pages')) { return {primary: 'Remove', secondary: 'Pages', connector: 'dot'}; } if (key.includes('crop') && key.includes('pdf')) { return {primary: 'Crop', secondary: 'PDF', connector: 'dot'}; } if (key.includes('pdf-editor')) { return {primary: 'Edit', secondary: 'PDF', connector: 'dot'}; } if (key.includes('unlock')) { return {primary: 'Unlock', secondary: 'PDF', connector: 'dot'}; } if (key.includes('protect')) { return {primary: 'Protect', secondary: 'PDF', connector: 'dot'}; } if (key.includes('pdf') && key.includes('metadata')) { return {primary: 'Clean', secondary: 'Metadata', connector: 'dot'}; } if (key.includes('metadata')) { return {primary: 'EXIF', secondary: 'Clean', connector: 'dot'}; } if (key.includes('background')) { return {primary: 'Remove', secondary: 'Background', connector: 'dot'}; } if (key.includes('crop')) { return {primary: 'Crop', secondary: 'Image', connector: 'dot'}; } if (key.includes('watermark')) { return {primary: 'Watermark', secondary: 'Image', connector: 'dot'}; } if (key.includes('upscale')) { return {primary: 'Upscale', secondary: 'Image', connector: 'dot'}; } if (key.includes('merge')) { return {primary: 'Merge', secondary: 'PDF', connector: 'dot'}; } if (key.includes('split')) { return {primary: 'Split', secondary: 'PDF', connector: 'dot'}; } if (key.includes('ocr')) { return {primary: 'OCR', secondary: 'PDF', connector: 'dot'}; } if (key.includes('sign')) { return {primary: 'Sign', secondary: 'PDF', connector: 'dot'}; } if (key.includes('trim')) { return {primary: 'Trim', secondary: 'Video', connector: 'dot'}; } return {primary: 'Tool', secondary: '', connector: 'dot'}; } function getIconClass(key, categoryName) { const toFormat = key.split('-to-')[1]; if (key === 'check-my-file') return 'bi-file-earmark-check'; if (key.includes('ascii')) return 'bi-textarea-t'; if (key.includes('resizer')) return 'bi-aspect-ratio'; if (key.includes('metadata')) return 'bi-shield-slash'; if (key.includes('compress')) return 'bi-file-earmark-zip'; if (key.includes('base64')) return 'bi-journal-code'; if (key.includes('background')) return 'bi-scissors'; if (key.includes('crop')) return 'bi-crop'; if (key.includes('watermark')) return 'bi-type'; if (key.includes('remove-pages')) return 'bi-trash'; if (key.includes('unlock')) return 'bi-unlock'; if (key.includes('protect')) return 'bi-lock'; if (key.includes('editor')) return 'bi-pencil-square'; if (key.includes('excel')) return 'bi-file-earmark-spreadsheet'; if (key.includes('upscale')) return 'bi-arrows-angle-expand'; if (key.includes('merge')) return 'bi-files'; if (key.includes('split')) return 'bi-scissors'; if (key.includes('ocr')) return 'bi-file-earmark-text'; if (key.includes('sign')) return 'bi-pen'; if (key.includes('trim')) return 'bi-scissors'; if (toFormat) { switch (toFormat) { case 'jpg': case 'jpeg': return 'bi-filetype-jpg'; case 'png': return 'bi-filetype-png'; case 'gif': return 'bi-filetype-gif'; case 'svg': return 'bi-filetype-svg'; case 'pdf': return 'bi-filetype-pdf'; case 'word': case 'docx': return 'bi-file-earmark-word'; case 'xls': case 'xlsx': case 'excel': return 'bi-file-earmark-spreadsheet'; case 'heic': return 'bi-filetype-heic'; case 'webp': return 'bi-filetype-webp'; case 'bmp': return 'bi-filetype-bmp'; case 'ico': return 'bi-file-image'; case 'mp4': return 'bi-filetype-mp4'; case 'mov': return 'bi-filetype-mov'; case 'mp3': return 'bi-filetype-mp3'; case 'wav': return 'bi-filetype-wav'; case 'avi': return 'bi-filetype-avi'; default: return 'bi-file-earmark-image'; } } if (categoryName === 'video') return 'bi-film'; if (categoryName === 'audio') return 'bi-music-note-beamed'; if (categoryName === 'image') return 'bi-file-earmark-image'; return 'bi-gear'; } const formatMeta = getFormatMeta(lowerKey); const connectorIcon = formatMeta.connector === 'arrow' ? 'bi-arrow-right-short' : 'bi-dot'; const iconClass = getIconClass(lowerKey, category); const mark = document.createElement('span'); mark.className = `tool-hero-mark converter-mark converter-mark--${category}`; const iconWrap = document.createElement('span'); iconWrap.className = 'converter-mark__icon'; const icon = document.createElement('i'); icon.className = iconClass; iconWrap.appendChild(icon); mark.appendChild(iconWrap); const formatWrap = document.createElement('span'); formatWrap.className = 'converter-format'; const primary = document.createElement('span'); primary.className = 'format-pill'; primary.textContent = formatMeta.primary; formatWrap.appendChild(primary); if (formatMeta.secondary) { const connector = document.createElement('span'); connector.className = 'format-connector'; const connectorIconEl = document.createElement('i'); connectorIconEl.className = connectorIcon; connector.appendChild(connectorIconEl); formatWrap.appendChild(connector); const secondary = document.createElement('span'); secondary.className = 'format-pill format-pill--secondary'; secondary.textContent = formatMeta.secondary; formatWrap.appendChild(secondary); } mark.appendChild(formatWrap); title.classList.add('tool-hero-title'); title.prepend(mark); })();