{"id":13405748,"url":"https://github.com/ckeditor/ckeditor4","last_synced_at":"2026-01-28T16:01:49.188Z","repository":{"id":4346210,"uuid":"5482172","full_name":"ckeditor/ckeditor4","owner":"ckeditor","description":"The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins.","archived":false,"fork":false,"pushed_at":"2025-02-17T08:47:22.000Z","size":142675,"stargazers_count":5815,"open_issues_count":1185,"forks_count":2467,"subscribers_count":257,"default_branch":"master","last_synced_at":"2026-01-26T22:25:36.338Z","etag":null,"topics":["ckeditor","ckeditor4","contenteditable","html-editor","rich-text-editor","rte","wysiwyg"],"latest_commit_sha":null,"homepage":"https://ckeditor.com/ckeditor-4","language":"Rich Text Format","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ckeditor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-08-20T14:21:13.000Z","updated_at":"2026-01-12T01:56:58.000Z","dependencies_parsed_at":"2025-03-01T06:17:08.301Z","dependency_job_id":null,"html_url":"https://github.com/ckeditor/ckeditor4","commit_stats":{"total_commits":21573,"total_committers":189,"mean_commits":"114.14285714285714","dds":0.880220646178093,"last_synced_commit":"82796d03d0ebbe34d48f3b65c6dde27107812a51"},"previous_names":["ckeditor/ckeditor-dev"],"tags_count":91,"template":false,"template_full_name":null,"purl":"pkg:github/ckeditor/ckeditor4","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckeditor%2Fckeditor4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckeditor%2Fckeditor4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckeditor%2Fckeditor4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckeditor%2Fckeditor4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ckeditor","download_url":"https://codeload.github.com/ckeditor/ckeditor4/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ckeditor%2Fckeditor4/sbom","scorecard":{"id":284587,"data":{"date":"2025-08-11","repo":{"name":"github.com/ckeditor/ckeditor4","commit":"c7e59ec199298b6b23f4aa7a7668f18572385bac"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"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":"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/setup-workflows.yml:1","Warn: no topLevel permission defined: .github/workflows/stalebot.yml:1","Warn: no topLevel permission defined: .github/workflows/update-deps.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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"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":-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":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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/setup-workflows.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/setup-workflows.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/setup-workflows.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/setup-workflows.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/setup-workflows.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/setup-workflows.yml:115: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/setup-workflows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stalebot.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/stalebot.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-deps.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/update-deps.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-deps.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/update-deps.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/update-deps.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/update-deps.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/update-deps.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/ckeditor/ckeditor4/update-deps.yml/master?enable=pin","Warn: npmCommand not pinned by hash: dev/builder/build.sh:114","Warn: npmCommand not pinned by hash: .github/workflows/update-deps.yml:34","Warn: npmCommand not pinned by hash: .github/workflows/update-deps.yml:72","Warn: npmCommand not pinned by hash: .github/workflows/update-deps.yml:73","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   4 npmCommand 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"}}]},"last_synced_at":"2025-08-17T16:55:21.994Z","repository_id":4346210,"created_at":"2025-08-17T16:55:21.994Z","updated_at":"2025-08-17T16:55:21.994Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: 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":["ckeditor","ckeditor4","contenteditable","html-editor","rich-text-editor","rte","wysiwyg"],"created_at":"2024-07-30T19:02:10.289Z","updated_at":"2026-01-28T16:01:49.172Z","avatar_url":"https://github.com/ckeditor.png","language":"Rich Text Format","readme":"# CKEditor 4 LTS - Smart WYSIWYG HTML editor [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Check%20out%20CKEditor%204%20on%20GitHub\u0026url=https%3A%2F%2Fgithub.com%2Fckeditor%2Fckeditor4)\n\n[![npm version](https://badge.fury.io/js/ckeditor4.svg)](https://www.npmjs.com/package/ckeditor4)\n[![GitHub tag](https://img.shields.io/github/tag/ckeditor/ckeditor4.svg)](https://github.com/ckeditor/ckeditor4)\n[![CircleCI](https://dl.circleci.com/status-badge/img/gh/ckeditor/ckeditor4/tree/master.svg?style=shield)](https://dl.circleci.com/status-badge/redirect/gh/ckeditor/ckeditor4/tree/master)\n\n\n[![Join newsletter](https://img.shields.io/badge/join-newsletter-00cc99.svg)](http://eepurl.com/c3zRPr)\n[![Follow Twitter](https://img.shields.io/badge/follow-twitter-00cc99.svg)](https://twitter.com/ckeditor)\n\n## ⚠️ CKEditor 4: End of Life and Extended Support Model until Dec 2028\n\nCKEditor 4 was launched in 2012 and reached its End of Life (EOL) on June 30, 2023.\n\nA special edition, **[CKEditor 4 LTS](https://ckeditor.com/ckeditor-4-support/)** (\"Long Term Support\"), is available under commercial terms ([\"Extended Support Model\"](https://ckeditor.com/ckeditor-4-support/)) for anyone looking to **extend the coverage of security updates and critical bug fixes**.\n\nWith CKEditor 4 LTS, security updates and critical bug fixes are guaranteed until December 2028.\n\n### Important update for CKEditor 4 Users\n\nStarting July 1, 2024, on the first anniversary of the end of life of CKEditor 4, we will activate security notifications for CKEditor 4. This change will impact the open-source version 4.22 and all earlier versions served via our CDN. Read more about the planned changes in a [dedicated article](https://ckeditor.com/blog/important-update-for-ckeditor-4-users/).\n\n## About this repository\n\n### Master branch = CKEditor 4 LTS\n\nAfter June 30, 2023 the `master` version of the [LICENSE.md](https://github.com/ckeditor/ckeditor4/blob/master/LICENSE.md) file changed to reflect the license of CKEditor 4 LTS available under the Extended Support Model.\n\nThis repository now contains the source code of CKEditor 4 LTS that is protected by copyright law.\n\n### Getting CKEditor 4 (Open Source)\n\nYou may continue using CKEditor 4.22.1 and below under the open source license terms. Please note, however, that the open source version no longer comes with any security updates, so your application will be at risk.\n\nIn order to download the open source version of CKEditor 4, use ****tags 4.22.1 and below****. CKEditor 4.22.1 was the last version of CKEditor 4 available under the open source license terms.\n\n## Summary of options after the CKEditor 4 End of Life\n\n### Upgrading to CKEditor 5\n\nCKEditor 5 is a great new editor with [lots of exciting features](https://ckeditor.com/docs/ckeditor5/latest/features/index.html).\n\nBefore upgrading, please be aware of the following changes:\n\n- CKEditor 5 is a completely new editor. **Upgrading is not as simple as replacing the folder with \"ckeditor\"** - read more in the [Migration from CKEditor 4](https://ckeditor.com/docs/ckeditor5/latest/updating/ckeditor4/migration-from-ckeditor-4.html) guide.\n- CKEditor 5 is available only under the GPL copyleft license (or under a commercial license).\n- Open source projects with a GPL-incompatible license may apply for a license under the [Free for Open Source](https://ckeditor.com/wysiwyg-editor-open-source/) program.\n\n### Using an outdated, unsupported version\n\nYou may continue using CKEditor 4.22.1 (or below). The license terms of the older CKEditor 4 versions have not changed. However, please note that by using software that is no longer maintained, you are introducing a **security risk to your application**.\n\n### Signing an \"Extended Support Model\" contract\n\nIf you are not ready to replace CKEditor 4 in your application yet, you may continue using CKEditor 4 until December 2028.\nCKEditor 4 LTS, available under the \"Extended Support Model\", will ship all important security updates and critical bug fixes, providing an interrupted editing experience for your end users. Please note that this version of CKEditor 4 is available only under a special agreement and requires a license key.\n\n## About CKEditor 4\n\nA highly configurable WYSIWYG HTML editor with hundreds of features, from creating rich text content with captioned images, videos, tables, media embeds, emoji, or mentions to pasting from Word and Google Docs and drag\u0026drop image upload.\n\nIt supports a broad range of browsers, including legacy ones.\n\n![CKEditor 4 screenshot](https://c.cksource.com/a/1/img/npm/ckeditor4.png)\n\n## Getting started\n\n### Using [npm package](https://www.npmjs.com/package/ckeditor4)\n\n```bash\nnpm install --save ckeditor4\n```\n\nUse it on your website:\n\n```html\n\u003cdiv id=\"editor\"\u003e\n    \u003cp\u003eThis is the editor content.\u003c/p\u003e\n\u003c/div\u003e\n\u003cscript src=\"./node_modules/ckeditor4/ckeditor.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n    CKEDITOR.replace( 'editor' );\n\u003c/script\u003e\n```\n\n### Using [CDN](https://cdn.ckeditor.com/#ckeditor4)\n\nLoad the CKEditor 4 script from the CDN:\n\n```html\n\u003cdiv id=\"editor\"\u003e\n    \u003cp\u003eThis is the editor content.\u003c/p\u003e\n\u003c/div\u003e\n\u003cscript src=\"https://cdn.ckeditor.com/4.22.1/standard/ckeditor.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n    CKEDITOR.replace( 'editor' );\n\u003c/script\u003e\n```\n\n#### CKEditor 4 LTS\n\nSince the introduction of the LTS version of CKEditor (`4.23.0-lts`) in June 2023, all future versions of CKEditor 4 contain `-lts` in their version number.\n\nAll future versions of CKEditor 4 (4.23.0-lts and above) are released as CKEditor 4 LTS distributions and require a license key.\n\nIf you acquired the [Extended Support Model](https://ckeditor.com/ckeditor-4-support/) for CKEditor 4 LTS, please read [the CKEditor 4 LTS key activation guide.](https://ckeditor.com/docs/ckeditor4/latest/support/licensing/license-key-and-activation.html)\n\nIn order to activate CKEditor 4 LTS, add `licenseKey` configure the editor with a valid license key:\n\n```html\n\u003cscript\u003e\n    CKEDITOR.replace( 'editor', {\n        licenseKey: 'your license key'\n    } );\n\u003c/script\u003e\n```\n\n### Integrating with Angular, React, and Vue.js\n\nRefer to the official usage guides for the [`ckeditor4-angular`](https://www.npmjs.com/package/ckeditor4-angular#usage), [`ckeditor4-react`](https://www.npmjs.com/package/ckeditor4-react#usage), and [`ckeditor4-vue`](https://www.npmjs.com/package/ckeditor4-vue#installation-and-usage) packages.\n\n### Manual download\n\nVisit the [CKEditor 4 download section](https://ckeditor.com/ckeditor-4/download/) on the [CKEditor website](https://ckeditor.com/ckeditor-4/) to download ready-to-use CKEditor 4 packages or to create a customized CKEditor 4 build.\n\n## Features\n\n* Over 500 plugins in the [Add-ons Repository](https://ckeditor.com/cke4/addons).\n* Pasting from Microsoft Word, Excel, and Google Docs.\n* Drag\u0026drop image uploads.\n* Media embeds to insert videos, tweets, maps, or slideshows.\n* Powerful clipboard integration.\n* Content quality control with Advanced Content Filter.\n* Extensible widget system.\n* Custom table selection.\n* Accessibility conforming to WCAG and Section 508.\n* Over 70 localizations available with full RTL support.\n\n## Browser support\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"IE / Edge\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eIE / Edge | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eFirefox | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eChrome | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eChrome (Android) | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eSafari | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png\" alt=\"iOS Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eiOS Safari | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png\" alt=\"Opera\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eOpera |\n| --------- | --------- | --------- | --------- | --------- | --------- | --------- |\n| IE8, IE9, IE10, IE11, Edge| latest version| latest version| latest version| latest version| latest version| latest version\n\nFind out more in the [Browser Compatibility guide](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_browsers.html#officially-supported-browsers).\n\n---\n\n## Working with the `ckeditor4` repository\n\n**Attention**: The code in this repository should be used locally and for development purposes only. We do not recommend using it in a production environment because the user experience will be very limited.\n\n### Code installation\n\nThere is no special installation procedure to install the development code.\nSimply clone it to any local directory and you are set.\n\n### Available branches\n\nThis repository contains the following branches:\n\n  - **`master`** \u0026ndash; Development of the upcoming minor release.\n  - **`stable`** \u0026ndash; Latest stable release tag point (non-beta).\n  - **`latest`** \u0026ndash; Latest release tag point (including betas).\n  - **`release/A.B.x`** (e.g. `4.0.x`, `4.1.x`) \u0026ndash; Release freeze, tests, and tagging. Hotfixing.\n\nNote that the `master` branch is under heavy development. Its code did not pass the release testing phase, though, so it may be unstable.\n\nAdditionally, all releases have their respective tags in the following form: `4.4.0`, `4.4.1`, etc. LTS editions have `-lts` at the end: `4.23.0-lts`, etc.\n\n### Samples\n\nThe `samples/` folder contains some examples that you can use to test your installation. Visit [CKEditor 4 Examples](https://ckeditor.com/docs/ckeditor4/latest/examples/index.html) for plenty of samples showcasing numerous editor features, with source code readily available to view, copy, and use in your own solution.\n\n### Code structure\n\nThe development code contains the following main elements:\n\n  - Main coding folders:\n    - `core/` \u0026ndash; The core API of CKEditor 4. Alone, it does nothing, but it provides the entire JavaScript API that makes the magic happen.\n    - `plugins/` \u0026ndash; Contains most of the plugins maintained by the CKEditor 4 core team.\n    - `skin/` \u0026ndash; Contains the official default skin of CKEditor 4.\n    - `dev/` \u0026ndash; Contains some developer tools.\n    - `tests/` \u0026ndash; Contains the CKEditor 4 tests suite.\n\n### Building a release\n\nYou can create a release-optimized version of the development code locally. Use the `dev/builder/build.sh` script for that purpose:\n\n\t\u003e ./dev/builder/build.sh\n\nA \"release-ready\" working copy of your development code will be built in the new `dev/builder/release/` folder. An Internet connection is necessary to run the builder, at least for the first time.\n\n### Testing environment\n\nRead more on how to set up the environment and execute tests in the [CKEditor 4 Testing Environment](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_tests.html) guide.\n\n### Reporting issues\n\nUse the [CKEditor 4 GitHub issue page](https://github.com/ckeditor/ckeditor4/issues) to report bugs and feature requests.\n\n### License\n\nCopyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n\nFor licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license)\n\n#### CKEditor 4.22.1 and below\n\nCKEditor 4 until version 4.22.1 was licensed under the terms of any of the following licenses of your choice:\n\n - GNU General Public License Version 2 or later.\n - GNU Lesser General Public License Version 2.1 or later.\n - Mozilla Public License Version 1.1 or later.\n\n#### CKEditor 4.23.0-lts and above\n\nCKEditor 4 LTS (starting from version 4.23.0-lts) is available under a commercial license only.\n","funding_links":[],"categories":["Rich Text Format","独立的","Repository"],"sub_categories":["Editor"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckeditor%2Fckeditor4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fckeditor%2Fckeditor4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fckeditor%2Fckeditor4/lists"}