Feature of the month - Collaborative writing in CKEditor 5

Feature of the month - Collaborative writing in CKEditor 5

Welcome to the “Feature of the month” blog post. Kickstarting this new series in 2021, we want to spotlight and present selected features we offer with CKEditor 5. Every month, we will present the functions that we find especially interesting or in need of better recognition from our users. This is all in the hope to bring a better editing experience to you.

JSX syntax for CKEditor 5 converters - an experiment

JSX syntax for CKEditor 5 converters - an experiment

The content in the CKEditor 5 is represented by a custom data model. It provides a layer of abstraction over the HTML data that is used to store the content (the data view). To translate the model representation to the target data format (in most cases HTML), the developer must provide a set of converters. This article showcases another approach to writing model-to-view converters and introduces a JSX-compatible syntax that allows to write converters by defining the expected output with syntax that is similar to the HTML data format.

CKEditor 5 v24.0.0 with multiline toolbar

CKEditor 5 v24.0.0 with multiline toolbar and accessible input labels

Working hard on creating content? Fair enough. We will make your work comfortable, with easy access to all the features you need. Welcome to our newest batch of UI enhancements: the multiline (wrapping) toolbar that you all asked for and the accessible input labels on interface items! Not convenient enough? Upload images by pasting their URL, track changes for pasting table styles, integrate with Vue.js 3, use Markdown shortcodes… Simply put - write well, edit well, stay well.

the best open source Markdown editor

CKEditor 5: the best open source Markdown editor

CKEditor is an open source rich-text editor. Even though it is mostly developed by CKSource, it has a large community of contributors backing the development efforts. One of the popular questions that we receive time and time again is the availability of Markdown editing. The simple answer is yes. Let’s dive a little deeper into this topic to get a more elaborate answer as to how.

CKEditor 5 v23.1.0 with raw HTML embedding, reconversion API and pasting tables into tables with track changes

New, advanced features are coming onboard. Embedding arbitrary HTML opens new possibilities for webmasters, while the reconversion introduced in CKEditor v23.1.0 is a great step toward easier, more reliable handling of the downcast conversion process. Pasting tables into tables in track changes mode, documentation updates and a new release of the React component will also, hopefully, please the CKEditor community.

How to detect human faces (and other shapes) in JavaScript

How to detect human faces (and other shapes) in JavaScript

Google believes in a Web that can compete with native applications unintimidated. One of the areas in which native applications for years have been superior to web applications was detecting shapes in images. Tasks such as face recognition were not possible until recently… But not anymore!

CKEditor 5 v23.0.0 with pagination feature, list styles and improved image upload

Improved plain text pasting coupled with a new pagination feature that lets you control the structure of your output and autolink added to editor builds bring forth an overall excellent experience in WYSIWYG editing. This release also brings enhancements to list styles and image upload. What you edit has never looked so good and so very much exactly the way you want it. Meet CKEditor 5 v23.0.0!

CKEditor 5 v22.0.0 with inserting images via URL, list styles and Markdown plugin

The newest CKEditor 5 is here and it brings a plethora of changes and improvements. There is a new easy way to add images to your documents and you can choose from a variety of list item markers available. The export to PDF and Word features are now out of beta and a new pagination feature is coming soon. Hopefully, all these changes will increase your content creation productivity.

How to successfully launch a software application

How to successfully launch a software application on Product Hunt in 2020?

So you’ve created an application and want it to reach a mass audience. Product Hunt is one of the most popular and easy ways to do this. In GitHub Writer’s case, Product Hunt helped the new application reach 1000 downloads. This Open Source side project, which is based on CKEditor 5, is a browser extension that brings WYSIWYG editing to GitHub. It was one of the top 5 products on the day of its launch and as such was promoted in its newsletter and socials. Read on to learn more about how you can make the best out of a Product Hunt launch as well.

Student information systems help guide students by communicating vital information.

The shape of things to come: student information systems edition

A student information system’s chief goal is to aid school communication of news and announcements between students, teachers, parents, faculty, and staff. So what, then, is effective school communication? The goal is the same whether you’re a student information system vendor or a school administrator who oversees your institution’s own homebrewed solution: a student information system that optimizes communication no matter the situation. Rich-text editing can aid in reaching that goal.

Swinging on an AST branch

Swinging on an AST branch

There are things that we tend not to notice since they are so obvious — or we just do not need to think about them. There are many such things in JavaScript, things that we do not need to worry about in our everyday work (unless you develop Babel or Rollup — then these things are your work…). Let's look into one of such things: Abstract Syntax Tree (AST).

Free Online HTML Editor

A simple on-the-go online HTML editor

Looking for a ready-to-use WYSIWYG editor access, without having to deal with any integrations? We got your back with our new website onlinehtmleditor.dev Read on to learn more.

How to become a better programmer

How to become a better programmer

Being a programmer is not a simple thing. The variety of programming languages, technologies, concepts, rules, and terminologies can be overwhelming for newcomers. What’s more, you need to be up-to-date all the time. Otherwise, you take a step back.

How to print WYSIWYG editor content to PDF

How to print WYSIWYG editor content to PDF - Export to PDF feature released

We are happy to announce the official launch of the new export to PDF feature for CKEditor 4 and CKEditor 5. This feature allows you to easily print the content of your WYSIWYG editor to a PDF file. What's more, the generated PDF document will preserve not only the rich-text content that you create in the editor, but also its structure and styling. Read on for more information!

CKEditor 5 v19.1.1 with table enhancements, typing around widgets and print to PDF feature

We are happy to announce the release of CKEditor 5 v19.1.1 that introduces further enhancements for the table feature, improved typing around widgets as well as the new PDF export feature. In addition to that, we focused on the adjustments of the editor's development tools to the newly adopted monorepo infrastructure. Read on for more details about these and other improvements!

What to consider when choosing the best WYSIWYG HTML editor

What to consider when choosing the best WYSIWYG HTML editor

Struggling to choose a writing solution that will fit your software perfectly? Maybe you need a brush up on which features, specifications and perks you should watch out for in 2020? Read on to learn about the most important things you should look for when choosing the best WYSIWYG HTML editor for your software project.

GitHub Writer: challenge accepted

GitHub Writer: challenge accepted!

It all started back in 2014, when the CKSource team gathered together in our usual meetups. Something really special was up for discussion: a brainstorm about the future of CKEditor. That meeting seeded the ideas and foundation for the amazing products we made available since then, including CKEditor 5 and Collaboration.

HTML in Node.js

HTML in Node.js

Sometimes we can be using a technology for years and not realize that it hides some small, yet super useful, feature deep inside. This is also true for Node.js and its require(). Did you know that it allows you to import HTML files into your JavaScript application?

An all around experience for working with data and content - CKEditor 4 Spreadsheets 1.2.0 released

We are happy to announce the release of CKEditor 4 Spreadsheets 1.2.0, which brings several improvements to make your work with data and content even easier than before. The Spreadsheet plugin now supports pasting data to and from Excel and Google Sheets. It also enables creating dynamic, auto-updating cell references in your WYSIWYG editor’s content. Last but not least, even deeper integration with CKEditor 4 allows you to apply more formatting and styling features to spreadsheet data. Read on for more information!

Knowledge management and capturing the ideas of your talent

Knowledge management systems and capturing the ideas of your talent with KM

Learn how choosing the right knowledge management system for your company is essential to turning your talent’s tacit knowledge into explicit knowledge. The sooner you identify the tool or system that’s just right, the sooner what they know can benefit you. Your response to the challenges of the modern marketplace depends on it.

Implementing single-file Web Components

Implementing single-file Web Components

Probably everyone who knows the Vue.js framework also heard about its single-file components. This super simple idea allows web developers to define the entire code of a component in one file. It is such a useful solution that an initiative to include this mechanism in browsers has already appeared. However, it seems quite dead as, unfortunately, no progress has been made since August 2017. Nevertheless, looking into this topic and trying to make single-file components work in the browsers using the technologies already available was an interesting experiment to undertake.

Signal abortion

Aborting a signal: How to cancel an asynchronous task in JavaScript

Performing asynchronous tasks can be hard, especially when a particular programming language does not allow for canceling mistakenly started or no longer needed actions. Fortunately, JavaScript offers a very handy piece of functionality for aborting an asynchronous activity. In this article, you can learn how to use it to create your own abortable function.

No entries

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

Thanks for subscribing!

Hi there, any questions about products or pricing?

Questions about our products or pricing?

Contact our Sales Representatives.

We are happy to
hear from you!

Thank you for reaching out to the CKEditor Sales Team. We have received your message and we will contact you shortly.

piAId = '1019062'; piCId = '3317'; piHostname = 'info.ckeditor.com'; (function() { function async_load(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + piHostname + '/pd.js'; var c = document.getElementsByTagName('script')[0]; c.parentNode.insertBefore(s, c); } if(window.attachEvent) { window.attachEvent('onload', async_load); } else { window.addEventListener('load', async_load, false); } })();(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });