{"id":13565325,"url":"https://github.com/drewnoakes/metadata-extractor","last_synced_at":"2026-04-08T08:03:11.161Z","repository":{"id":23471890,"uuid":"26836459","full_name":"drewnoakes/metadata-extractor","owner":"drewnoakes","description":"Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files","archived":false,"fork":false,"pushed_at":"2026-03-26T20:55:45.000Z","size":12781,"stargazers_count":2774,"open_issues_count":169,"forks_count":499,"subscribers_count":122,"default_branch":"main","last_synced_at":"2026-04-03T09:56:49.080Z","etag":null,"topics":["eps","exif","icc","iptc","java","jpeg","metadata","mp4","photography","png","quicktime","tiff","video","webp","xmp"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"thewildpendulum/angular-phonegap-seed","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drewnoakes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-11-19T00:13:55.000Z","updated_at":"2026-04-03T03:15:51.000Z","dependencies_parsed_at":"2024-02-04T06:29:34.209Z","dependency_job_id":"8a61f095-c94b-45be-90ca-cc8e0877fa73","html_url":"https://github.com/drewnoakes/metadata-extractor","commit_stats":{"total_commits":1316,"total_committers":68,"mean_commits":"19.352941176470587","dds":"0.17249240121580545","last_synced_commit":"3db5330554965b82683cfa53859e8de44f293059"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/drewnoakes/metadata-extractor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewnoakes%2Fmetadata-extractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewnoakes%2Fmetadata-extractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewnoakes%2Fmetadata-extractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewnoakes%2Fmetadata-extractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drewnoakes","download_url":"https://codeload.github.com/drewnoakes/metadata-extractor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewnoakes%2Fmetadata-extractor/sbom","scorecard":{"id":356024,"data":{"date":"2025-08-11","repo":{"name":"github.com/drewnoakes/metadata-extractor","commit":"3ab56d5cb6b7c5c4d945c9325c53fe2c383b0fd8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6,"checks":[{"name":"Maintained","score":10,"reason":"16 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/maven.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":5,"reason":"Found 8/14 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/drewnoakes/metadata-extractor/maven.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/drewnoakes/metadata-extractor/maven.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: OSSFuzz integration found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T09:37:16.218Z","repository_id":23471890,"created_at":"2025-08-18T09:37:16.218Z","updated_at":"2025-08-18T09:37:16.218Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31545909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eps","exif","icc","iptc","java","jpeg","metadata","mp4","photography","png","quicktime","tiff","video","webp","xmp"],"created_at":"2024-08-01T13:01:44.661Z","updated_at":"2026-04-08T08:03:11.156Z","avatar_url":"https://github.com/drewnoakes.png","language":"Java","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=TNXDJKCDV5Z2C\u0026lc=GB\u0026item_name=Drew%20Noakes\u0026item_number=metadata%2dextractor\u0026no_note=0\u0026cn=Add%20a%20message%20%28optional%29%3a\u0026no_shipping=1\u0026currency_code=GBP\u0026bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"],"categories":["Java","Geobased search on:","HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"![metadata-extractor logo](https://cdn.rawgit.com/drewnoakes/metadata-extractor/master/Resources/metadata-extractor-logo.svg)\n\n[![metadata-extractor build status](https://github.com/drewnoakes/metadata-extractor/actions/workflows/maven.yml/badge.svg)](https://github.com/drewnoakes/metadata-extractor/actions/workflows/maven.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/com.drewnoakes/metadata-extractor.svg?maxAge=2592000)](https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor)\n[![Donate](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=TNXDJKCDV5Z2C\u0026lc=GB\u0026item_name=Drew%20Noakes\u0026item_number=metadata%2dextractor\u0026no_note=0\u0026cn=Add%20a%20message%20%28optional%29%3a\u0026no_shipping=1\u0026currency_code=GBP\u0026bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)\n\n_metadata-extractor_ is a Java library for reading metadata from media files.\n\n## Installation\n\nThe easiest way is to install the library via its [Maven package](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.drewnoakes%22%20AND%20a%3A%22metadata-extractor%22).\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.drewnoakes\u003c/groupId\u003e\n  \u003cartifactId\u003emetadata-extractor\u003c/artifactId\u003e\n  \u003cversion\u003e2.19.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nAlternatively, download it from the [releases page](https://github.com/drewnoakes/metadata-extractor/releases).\n\n## Usage\n\n```java\nMetadata metadata = ImageMetadataReader.readMetadata(imagePath);\n```\n\nWith that `Metadata` instance, you can [iterate or query](https://github.com/drewnoakes/metadata-extractor/wiki/Getting-Started-(Java)#2-query-tags) the\n[various tag values](https://github.com/drewnoakes/metadata-extractor/wiki/SampleOutput) that were read from the image.\n\n## Features\n\nThe library understands several formats of metadata, many of which may be present in a single image:\n\n* [Exif](https://en.wikipedia.org/wiki/Exchangeable_image_file_format)\n* [IPTC](https://en.wikipedia.org/wiki/IPTC)\n* [XMP](https://en.wikipedia.org/wiki/Extensible_Metadata_Platform)\n* [JFIF / JFXX](https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)\n* [ICC Profiles](https://en.wikipedia.org/wiki/ICC_profile)\n* [Photoshop](https://en.wikipedia.org/wiki/Photoshop) fields\n* [WebP](https://en.wikipedia.org/wiki/WebP) properties\n* [WAV](https://en.wikipedia.org/wiki/WAV) properties\n* [AVI](https://en.wikipedia.org/wiki/Audio_Video_Interleave) properties\n* [PNG](https://en.wikipedia.org/wiki/Portable_Network_Graphics) properties\n* [BMP](https://en.wikipedia.org/wiki/BMP_file_format) properties\n* [GIF](https://en.wikipedia.org/wiki/Graphics_Interchange_Format) properties\n* [ICO](https://en.wikipedia.org/wiki/ICO_(file_format)) properties\n* [PCX](https://en.wikipedia.org/wiki/PCX) properties\n* [QuickTime](https://en.wikipedia.org/wiki/QuickTime_File_Format) properties\n* [MP4](https://en.wikipedia.org/wiki/MPEG-4_Part_14) properties\n\nIt will process files of type:\n\n* JPEG\n* TIFF\n* WebP\n* WAV\n* AVI\n* PSD\n* PNG\n* BMP\n* GIF\n* HEIF (HEIC \u0026 AVIF)\n* ICO\n* PCX\n* QuickTime\n* MP4\n* Camera Raw\n  * NEF (Nikon)\n  * CR2 (Canon)\n  * ORF (Olympus)\n  * ARW (Sony)\n  * RW2 (Panasonic)\n  * RWL (Leica)\n  * SRW (Samsung)\n\nCamera-specific \"makernote\" data is decoded for cameras manufactured by:\n\n* Agfa\n* Apple\n* Canon\n* Casio\n* Epson\n* Fujifilm\n* Kodak\n* Kyocera\n* Leica\n* Minolta\n* Nikon\n* Olympus\n* Panasonic\n* Pentax\n* Reconyx\n* Sanyo\n* Sigma/Foveon\n* Sony\n\nRead [getting started](https://github.com/drewnoakes/metadata-extractor/wiki/Getting-Started) for an introduction to the basics of using this library.\n\n## Questions \u0026 Feedback\n\nThe quickest way to have your questions answered is via [Stack Overflow](http://stackoverflow.com/questions/tagged/metadata-extractor).\nCheck whether your question has already been asked, and if not, ask a new one tagged with both `metadata-extractor` and `java`.\n\nBugs and feature requests should be provided via the project's [issue tracker](https://github.com/drewnoakes/metadata-extractor/issues).\nPlease attach sample images where possible as most issues cannot be investigated without an image.\n\n## Contributing\n\nIf you want to get your hands dirty, making a pull request is a great way to enhance the library.\nIn general it's best to create an issue first that captures the problem you want to address.\nYou can discuss your proposed solution in that issue.\nThis gives others a chance to provide feedback before you spend your valuable time working on it.\n\nAn easier way to help is to contribute to the [sample image file library](https://github.com/drewnoakes/metadata-extractor-images/wiki) used for research and testing.\n\n## Credits\n\nThis library is developed by [Drew Noakes](https://drewnoakes.com/code/exif/).\n\nThanks are due to the many [users](https://github.com/drewnoakes/metadata-extractor/wiki/UsedBy) who sent in suggestions, bug reports,\n[sample images](https://github.com/drewnoakes/metadata-extractor-images/wiki) from their cameras as well as encouragement.\nWherever possible, they have been credited in the source code and commit logs.\n\n## Other languages\n\n- .NET  [metadata-extractor-dotnet](https://github.com/drewnoakes/metadata-extractor-dotnet) is a complete port to C#, maintained alongside this library\n- PHP [php-metadata-extractor](https://github.com/gomoob/php-metadata-extractor) wraps this Java project, making it available to users of PHP\n- Clojure [exif-processor](https://github.com/joshuamiller/exif-processor) wraps this Java project, returning a subset of data\n- Clojure [beeld](https://github.com/danielsz/beeld) wraps this Java project, returning all of the data. It also defines an interface for low-level image manipulation. It will resize an image while honoring the orientation tag, preserving portrait mode (something Java's _ImageIO_ doesn't do).\n---\n\nMore information about this project is available at:\n\n* https://drewnoakes.com/code/exif/\n* https://github.com/drewnoakes/metadata-extractor/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewnoakes%2Fmetadata-extractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrewnoakes%2Fmetadata-extractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewnoakes%2Fmetadata-extractor/lists"}