{"id":13442363,"url":"https://github.com/asciinema/asciinema-player","last_synced_at":"2026-02-27T17:24:10.120Z","repository":{"id":15301383,"uuid":"18031150","full_name":"asciinema/asciinema-player","owner":"asciinema","description":"Web player for terminal session recordings and streams","archived":false,"fork":false,"pushed_at":"2026-02-19T15:49:23.000Z","size":3075,"stargazers_count":2863,"open_issues_count":11,"forks_count":287,"subscribers_count":50,"default_branch":"develop","last_synced_at":"2026-02-26T05:09:26.766Z","etag":null,"topics":["asciicast","asciinema","player","recording","terminal"],"latest_commit_sha":null,"homepage":"https://docs.asciinema.org/manual/player/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asciinema.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"ku1ik","liberapay":"ku1ik"}},"created_at":"2014-03-23T10:40:11.000Z","updated_at":"2026-02-24T05:30:12.000Z","dependencies_parsed_at":"2023-01-13T18:21:28.367Z","dependency_job_id":"b083070b-51b4-4130-af7e-7f67bc32978c","html_url":"https://github.com/asciinema/asciinema-player","commit_stats":{"total_commits":1225,"total_committers":19,"mean_commits":64.47368421052632,"dds":0.04326530612244894,"last_synced_commit":"152ccda1db9fa99f28847809399ef9efd0add6b0"},"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/asciinema/asciinema-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asciinema%2Fasciinema-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asciinema%2Fasciinema-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asciinema%2Fasciinema-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asciinema%2Fasciinema-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asciinema","download_url":"https://codeload.github.com/asciinema/asciinema-player/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asciinema%2Fasciinema-player/sbom","scorecard":{"id":211095,"data":{"date":"2025-08-11","repo":{"name":"github.com/asciinema/asciinema-player","commit":"6681cec6187eaf39fef7242cf4909734a1659d13"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"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":"Maintained","score":10,"reason":"14 commit(s) and 0 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/prerelease.yml:4","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:4","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":"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":"Code-Review","score":1,"reason":"Found 4/23 approved changesets -- score normalized to 1","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":"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":"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":"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/build.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/build.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/build.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/build.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prerelease.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/prerelease.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/prerelease.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/prerelease.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/prerelease.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/prerelease.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/release.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/release.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/asciinema/asciinema-player/release.yml/develop?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party 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":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.10.0 not signed: https://api.github.com/repos/asciinema/asciinema-player/releases/221589126","Warn: release artifact v3.9.0 not signed: https://api.github.com/repos/asciinema/asciinema-player/releases/198298335","Warn: release artifact v3.10.0 does not have provenance: https://api.github.com/repos/asciinema/asciinema-player/releases/221589126","Warn: release artifact v3.9.0 does not have provenance: https://api.github.com/repos/asciinema/asciinema-player/releases/198298335"],"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'develop'"],"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 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"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: RUSTSEC-2022-0054 / GHSA-rc23-xxgq-x27g"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T00:46:54.224Z","repository_id":15301383,"created_at":"2025-08-17T00:46:54.224Z","updated_at":"2025-08-17T00:46:54.224Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29906083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T14:46:13.553Z","status":"ssl_error","status_checked_at":"2026-02-27T14:46:10.522Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["asciicast","asciinema","player","recording","terminal"],"created_at":"2024-07-31T03:01:44.833Z","updated_at":"2026-02-27T17:24:10.113Z","avatar_url":"https://github.com/asciinema.png","language":"JavaScript","funding_links":["https://github.com/sponsors/ku1ik","https://liberapay.com/ku1ik"],"categories":["Clojure","JavaScript","terminal"],"sub_categories":[],"readme":"# asciinema player\n\n[![Build status](https://github.com/asciinema/asciinema-player/actions/workflows/build.yml/badge.svg)](https://github.com/asciinema/asciinema-player/actions/workflows/build.yml)\n\n__asciinema player__ is a web player for terminal sessions recordings.\n\nUnlike typical web _video_ players, which play heavyweight video files (`.mp4`,\n`.mov`), asciinema player plays lightweight terminal session recordings in the\ntext-based [asciicast](https://docs.asciinema.org/manual/asciicast/v3/) format\n(`.cast`), such as those produced by the [asciinema\nrecorder](https://docs.asciinema.org/manual/cli/).\n\nThe player is built from the ground up with JavaScript and\n[Rust](https://www.rust-lang.org/) ([WASM](https://webassembly.org/)), and is\navailable as [npm package](https://www.npmjs.com/package/asciinema-player) and a\n[standalone JS\nbundle](https://github.com/asciinema/asciinema-player/releases/latest).\n\nYou can use it on any HTML page - in a project documentation, on a blog, or in a\nconference talk presentation.\n\nIt's as easy as adding a single line of Javascript code to your web page:\n\n```javascript\nAsciinemaPlayer.create('demo.cast', document.getElementById('demo'));\n```\n\nCheck out the [quick start\nguide](https://docs.asciinema.org/manual/player/quick-start/) for basic setup\noverview.\n\nYou can see the player in action in [asciinema\ndocumentation](https://docs.asciinema.org/manual/player/).\n\nNotable features:\n\n* ability to copy-paste terminal content - it's just text after all!\n* smooth, timing-accurate playback,\n* [idle time optimization](https://docs.asciinema.org/manual/player/options/#idletimelimit) to skip periods of inactivity,\n* [posters](https://docs.asciinema.org/manual/player/options/#poster),\n* [markers](https://docs.asciinema.org/manual/player/markers/) for navigation or auto-pause,\n* configurable [font families](https://docs.asciinema.org/manual/player/fonts/) and [line height](https://docs.asciinema.org/manual/player/options/#terminallineheight),\n* [automatic terminal scaling](https://docs.asciinema.org/manual/player/options/#fit) to fit into container element in most efficient way,\n* full-screen mode,\n* [multiple color themes for standard 16 colors](https://docs.asciinema.org/manual/player/options/#theme) + support for 256 color palette and 24-bit true color (ISO-8613-3),\n* [adjustable playback speed](https://docs.asciinema.org/manual/player/options/#speed),\n* [looped playback](https://docs.asciinema.org/manual/player/options/#loop), infinite or finite,\n* [starting playback at specific time](https://docs.asciinema.org/manual/player/options/#startat),\n* [API for programmatic control](https://docs.asciinema.org/manual/player/api/),\n* [keyboard shortcuts](https://docs.asciinema.org/manual/player/shortcuts/),\n* [support for other recording formats](https://docs.asciinema.org/manual/player/parsers/) like ttyrec, typescript.\n\n## Building\n\nBuilding asciinema player from source requires:\n\n- [Node.js](https://nodejs.org/) and [npm](https://www.npmjs.com/),\n- [Rust](https://www.rust-lang.org/) compiler (1.77 or later) and [Cargo package\n  manager](https://doc.rust-lang.org/cargo/).\n\nTo build the project run:\n\n    git clone https://github.com/asciinema/asciinema-player\n    cd asciinema-player\n    rustup target add wasm32-unknown-unknown\n    npm install\n    npm run build\n\nThis produces following output files:\n\n- `dist/index.js` - monolithic ES module, to be `import`-ed in your JS bundle\n- `dist/bundle/asciinema-player.js` - standalone monolithic player script (IIFE), to be linked directly from a website\n- `dist/bundle/asciinema-player.min.js` - minimized version of the above\n- `dist/bundle/asciinema-player.css` - stylesheet, to be linked directly from a website or included in a CSS bundle\n\nThe monolithic version of the player covers majority of use cases, and it's all\nyou need to use the player.\n\nIn addition, the split version of the player is built with `npm run build`,\nproducing the following files:\n\n- `dist/ui.js` - UI ES module, to be `import`-ed in your JS bundle\n- `dist/bundle/asciinema-player-ui.js` - standalone UI script (IIFE), to be linked directly from a website\n- `dist/bundle/asciinema-player-ui.min.js` - minimized version of the above\n- `dist/bundle/asciinema-player-worker.js` - standalone web worker script (IIFE), to be linked directly from a website\n- `dist/bundle/asciinema-player-worker.min.js` - minimized version of the above\n\nThe split version runs the UI and data crunching (parsing, terminal emulation)\nin separate OS threads, which improves UI's responsiveness during playback. In\nthis setup the UI code runs in the window context, while the processing code\nruns in a\n[WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API).\nThe benefit of this configuration is typically observed only for high\nframe-rate / high bandwidth recordings. For typical demos/sessions it's\nnot worth the setup hassle.\n\n## Donations\n\nSustainability of asciinema development relies on donations and sponsorships.\n\nPlease help the software project you use and love. Become a\n[supporter](https://docs.asciinema.org/donations/#individuals) or a [corporate\nsponsor](https://docs.asciinema.org/donations/#corporate-sponsorship).\n\nasciinema is sponsored by:\n\n- [Brightbox](https://www.brightbox.com/)\n\n## Consulting\n\nIf you're interested in integration or customization of asciinema player to suit\nyour needs, check [asciinema consulting\nservices](https://docs.asciinema.org/consulting/).\n\n## License\n\n© 2011 Marcin Kulik.\n\nAll code is licensed under the Apache License, Version 2.0. See\n[LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasciinema%2Fasciinema-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasciinema%2Fasciinema-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasciinema%2Fasciinema-player/lists"}