Journal for Developers

Document Kotlin Code

0 66

KDoc, the language used to document the Kotlin code, equivalent to Java’s JavaDoc. KDoc combines the JavaDoc’s syntax for block tags (extended to support Kotlin’s specific construct) and Markdown for inline markup.

Generating the Documentation

Kotlin’s documentation generation tool is called Dokka. See the Dokka README for usage instructions.

Dokka has plugins for Gradle, Maven and Ant, so you can integrate documentation generation into your build process.

KDoc Syntax

KDoc comments start with /** and end with */, this is very much similar to the JavaDoc. Every line of the comment within this block may begin with an asterisk, this symbol is not considered part of the contents on the comment.

By convention, the first paragraph of the documentation text (the block of text until the first blank line) is the summary description of the element, and the following text is the detailed description.

Every block tag begins on a new line and starts with the @ character.

Here’s an example of a class documented using KDoc:

 * A group of *members*.
 * This class has no useful logic; it's just a documentation example.
 * @param T the type of a member in this group.
 * @property name the name of this group.
 * @constructor Creates an empty group.
class Group<T>(val name: String) {
     * Adds a [member] to this group.
     * @return the new size of the group.
    fun add(member: T): Int { ... }

Block Tags

KDoc currently supports the following block tags:


Documents a value parameter of a function or a type parameter of a class, property or function. To better separate the parameter name from the description, if you prefer, you can enclose the name of the parameter in brackets. The following two syntaxes are therefore equivalent:

@param name description.
@param[name] description.


Documents the return value of a function.


Documents the primary constructor of a class.


Documents the receiver of an extension function.

@property <name>

Documents the property of a class which has the specified name. This tag can be used for documenting properties declared in the primary constructor, where putting a doc comment directly before the property definition would be awkward.

@throws <class>@exception <class>

Documents an exception which can be thrown by a method. Since Kotlin does not have checked exceptions, there is also no expectation that all possible exceptions are documented, but you can still use this tag when it provides useful information for users of the class.

@sample <identifier>

Embeds the body of the function with the specified qualified name into the documentation for the current element, in order to show an example of how the element could be used.

@see <identifier>

Adds a link to the specified class or method to the See Also block of the documentation.


Specifies the author of the element being documented.


Specifies the version of the software in which the element being documented was introduced.


Excludes the element from the generated documentation. Can be used for elements which are not part of the official API of a module but still have to be visible externally.

KDoc does not support the @deprecated tag. Instead, please use the @Deprecated annotation.



Subscribe to our Journal

Join our mailing list to receive the latest news and updates from our team.

You have Successfully Subscribed!