{"id":15641285,"url":"https://github.com/sxzz/ast-explorer","last_synced_at":"2026-01-22T00:11:40.673Z","repository":{"id":192301153,"uuid":"686455401","full_name":"sxzz/ast-explorer","owner":"sxzz","description":"A web tool to explore the ASTs generated by parsers.","archived":false,"fork":false,"pushed_at":"2026-01-16T21:29:51.000Z","size":4919,"stargazers_count":472,"open_issues_count":5,"forks_count":55,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-17T17:47:27.929Z","etag":null,"topics":["acorn","ast","babel","css","eslint","explorer","flow","hermes","html","markdown","sql","svelte","swc","vue","wxml","yaml"],"latest_commit_sha":null,"homepage":"https://ast-explorer.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sxzz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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":["sxzz"]}},"created_at":"2023-09-02T21:12:03.000Z","updated_at":"2026-01-16T21:29:55.000Z","dependencies_parsed_at":"2023-09-24T13:04:43.473Z","dependency_job_id":"6ede40e6-2e81-4522-9953-0b19f3b77cb5","html_url":"https://github.com/sxzz/ast-explorer","commit_stats":{"total_commits":319,"total_committers":11,"mean_commits":29.0,"dds":0.2727272727272727,"last_synced_commit":"e3bf6e22311fcb35ced5e643fbf004ce5dddf74c"},"previous_names":["sxzz/ast-explorer"],"tags_count":88,"template":false,"template_full_name":null,"purl":"pkg:github/sxzz/ast-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sxzz%2Fast-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sxzz%2Fast-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sxzz%2Fast-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sxzz%2Fast-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sxzz","download_url":"https://codeload.github.com/sxzz/ast-explorer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sxzz%2Fast-explorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28647677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"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":["acorn","ast","babel","css","eslint","explorer","flow","hermes","html","markdown","sql","svelte","swc","vue","wxml","yaml"],"created_at":"2024-10-03T11:42:05.941Z","updated_at":"2026-01-22T00:11:40.650Z","avatar_url":"https://github.com/sxzz.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./public/logo.svg\" /\u003e\n  \u003ch1\u003eAST Explorer\u003c/h1\u003e\n\u003c/div\u003e\n\nAST Explorer - A web tool to explore the ASTs generated by parsers.\n\n- Stable Release: [ast-explorer.dev](https://ast-explorer.dev/)\n- Dev Channel: [dev.ast-explorer.dev](https://dev.ast-explorer.dev/)\n\nFeel free to add more languages and parsers via PR!\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Screenshot\" src=\"./.github/screenshot.png\" width=\"800px\" /\u003e\n\u003c/div\u003e\n\n## Features\n\n- 🦾 Enable code highlighting, suggestions, and formatting with Monaco Editor.\n- 🤩 Support most popular front-end languages and parsers.\n- 🗒️ Save your code via URL. No database, no server downtime.\n- 🐙 Customize parser version via CDN, e.g., `@babel/parser` alpha.\n- 🌈 Set custom parser options with a GUI.\n- 🌚 Good-looking dark mode theme.\n- 📱 Even compatible with mobile devices.\n\n## Languages and Parsers\n\n- JavaScript / TypeScript\n  - [Babel](https://babel.dev/)\n  - [TypeScript](https://www.typescriptlang.org/)\n  - [Oxc](https://oxc.rs/docs/guide/usage/parser.html)\n  - [SWC](https://swc.rs/docs/usage/core#parse)\n  - [Acron](https://github.com/acornjs/acorn)\n  - [Espree](https://github.com/eslint/espree)\n  - [TypeScript ESLint](https://typescript-eslint.io/packages/parser/)\n  - [Esprima Next](https://github.com/node-projects/esprima-next)\n  - [Flow](https://github.com/facebook/flow/tree/main/packages/flow-parser)\n  - [Hermes](https://github.com/facebook/hermes)\n  - [meriyah](https://github.com/meriyah/meriyah)\n  - [ohos-typescript](https://gitcode.com/openharmony/third_party_typescript)\n  - [go-fAST](https://github.com/t14raptor/go-fast)\n- [Vue](https://vuejs.org/)\n- [Svelte](https://svelte.dev/)\n- [Astro](https://astro.build/)\n- [Angular](https://angular.dev/)\n- CSS\n  - [csstree](https://github.com/csstree/csstree)\n  - [PostCSS](https://postcss.org/)\n  - [Lightning CSS](https://lightningcss.dev/)\n- HTML\n  - [htmlparser2](https://feedic.com/htmlparser2/)\n  - [rehype](https://github.com/rehypejs/rehype)\n  - [@html-eslint/parser](https://github.com/yeonjuan/html-eslint)\n  - [ultrahtml](https://github.com/natemoo-re/ultrahtml/)\n  - [angular-html-parser](https://github.com/prettier/angular-html-parser)\n- JSON\n  - [json-to-ast](https://github.com/vtrushin/json-to-ast)\n  - [moma](https://www.npmjs.com/package/@humanwhocodes/momoa)\n  - [jsonc-eslint-parser](https://www.npmjs.com/package/jsonc-eslint-parser)\n  - [TypeScript](https://www.typescriptlang.org/)\n- Markdown\n  - [remark](https://github.com/remarkjs/remark)\n- YAML\n  - [yaml](https://eemeli.org/yaml/)\n  - [yaml-eslint-parser](https://www.npmjs.com/package/yaml-eslint-parser)\n  - [yaml-unist-parser](https://github.com/prettier/yaml-unist-parser)\n- Rust\n  - [astexplorer-syn](https://www.npmjs.com/package/astexplorer-syn)\n  - [jinx-rust](https://www.npmjs.com/package/jinx-rust)\n  - [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust)\n- SQL\n  - [sql-parser-cst](https://github.com/nene/sql-parser-cst)\n- PHP\n  - [php-parser](https://www.npmjs.com/package/php-parser)\n- Java\n  - [java-parser](https://github.com/jhipster/prettier-java/tree/main/packages/java-parser)\n- Python\n  - [pyodide](https://pyodide.org/)\n- C#\n  - [tree-sitter-c-sharp](https://github.com/tree-sitter/tree-sitter-c-sharp)\n- [Solidity](https://soliditylang.org/)\n  - [@solidity-parser/parser](https://github.com/solidity-parser/parser)\n- [WXML](https://github.com/wxmlfile/wxml-parser)\n- [GraphQL](https://graphql.org/)\n  - [graphql](https://www.graphql-js.org/docs/)\n- [Protocol Buffers](https://protobuf.dev/)\n  - [protobufjs](https://github.com/protobufjs/protobuf.js)\n\nMore parsers via [web-tree-sitter](https://github.com/tree-sitter/tree-sitter), see [tree-sitter parsers](https://github.com/tree-sitter/tree-sitter/wiki/List-of-parsers).\n\n## URL Encode Algorithm\n\nThe input code and options are stored in the URL as a hash fragment,\nwhich is the string following the `#` symbol\nand is not transmitted to the server.\n\n#### Implementation\n\n```ts\nconst code = 'code'\nconst parserId = 'acorn'\nconst optionsString = JSON.stringify({\n  ecmaVersion: 'latest',\n  sourceType: 'module',\n})\nconst serialized = utoa(\n  // utoa, or compress() if want to compress the data\n  JSON.stringify({\n    c: code,\n    p: parserId,\n    o: optionsString,\n  }),\n)\nconst url = `https://ast-explorer.dev/#${serialized}`\n\n// no compress\nfunction utoa(data: string): string {\n  return btoa(unescape(encodeURIComponent(data)))\n}\n\n// compress is optional\nimport { strFromU8, strToU8, unzlibSync, zlibSync } from 'fflate'\nfunction compress(data: string) {\n  const buffer = strToU8(data)\n  const zipped = zlibSync(buffer, { level: 9 })\n  const binary = strFromU8(zipped, true)\n  return btoa(binary)\n}\n```\n\n## Contributing\n\nTo contribute to the project, see [Contribution Guide](https://github.com/sxzz/contribute).\n\n## Credits\n\nThis project references and is inspired by [fkling/astexplorer](https://github.com/fkling/astexplorer), an open-source web tool for exploring the ASTs generated by various parsers.\n\nAlso, thanks to the following projects for their contributions:\n\n- https://play.swc.rs/\n\n## Sponsors\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://cdn.jsdelivr.net/gh/sxzz/sponsors/sponsors.svg\"\u003e\n    \u003cimg src='https://cdn.jsdelivr.net/gh/sxzz/sponsors/sponsors.svg'/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## License\n\n[AGPL-3.0](./LICENSE) License © 2023-PRESENT [三咲智子](https://github.com/sxzz)\n","funding_links":["https://github.com/sponsors/sxzz"],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsxzz%2Fast-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsxzz%2Fast-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsxzz%2Fast-explorer/lists"}