diff --git a/ui/text/README.md b/ui/text/README.md
index 003caf7..23a02f7 100644
--- a/ui/text/README.md
+++ b/ui/text/README.md
@@ -1,9 +1,11 @@
 Text Styling
 ============
-This sample shows how to style text on Android using spans.
+These samples shows how to style text on Android using spans, in [Java](https://github.com/googlesamples/android-text/tree/master/TextStyling-Java) and in [Kotlin](https://github.com/googlesamples/android-text/tree/master/TextStyling-Kotlin).
+
 
 Introduction
 ------------
+The difference between [TextStyling-Java](https://github.com/googlesamples/android-text/tree/master/TextStyling-Java) and [TextStyling-Kotlin](https://github.com/googlesamples/android-text/tree/master/TextStyling-Kotlin) is only in the language. They have the same set of features, same class names and similar ways of testing the functionality.
 ## Features
 Parse some hardcoded text and do the following:
 * Paragraphs starting with “> ” are transformed into quotes.
@@ -17,7 +19,7 @@
 To see how to apply a span, check out `MarkdownBuilder.buildCodeBlockSpan`. To see how to apply multiple spans on the same string, see `MarkdownBuilder.buildQuoteSpan”. For examples of creating custom spans, see `BulletPointSpan`, `CodeBlockSpan` or `FontSpan`.
 
 ## Testing
-Parsing of the text is tested with JUnit tests in `ParserTest`. Span building is tested via Android JUnit tests, in `MarkdownBuilderTest`. 
+Text parsing is tested with JUnit tests in `ParserTest`. Span building is tested via Android JUnit tests, in `MarkdownBuilderTest`.
 
 
 Getting Started
diff --git a/ui/text/TextStyling-Java/README.md b/ui/text/TextStyling-Java/README.md
new file mode 100644
index 0000000..7133482
--- /dev/null
+++ b/ui/text/TextStyling-Java/README.md
@@ -0,0 +1,73 @@
+Text Styling
+============
+This sample shows how to style text on Android using spans, in Java.
+
+Introduction
+------------
+## Features
+Parse some hardcoded text and do the following:
+* Paragraphs starting with “> ” are transformed into quotes.
+* Text enclosed in “```” will be transformed into inline code block.
+* Lines starting with “+ ” or “* ” will be transformed into bullet points.
+To update the text, modify the value of `R.string.display_text`.
+This project is not meant to fully cover the markdown capabilities and has several limitations; for example, quotes do not support nesting other elements.
+
+## Implementation
+The text is parsed in the [`Parser.parse`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/parser/Parser.java#L62) method and the spans are created in the [`MarkdownBuilder.markdownToSpans`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/MarkdownBuilder.java#L62) method.
+To see how to apply a span, check out [`MarkdownBuilder.buildCodeBlockSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/MarkdownBuilder.java#L120). To see how to apply multiple spans on the same string, see [`MarkdownBuilder.buildQuoteSpan”](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/MarkdownBuilder.java#L108). For examples of creating custom spans, see [`BulletPointSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/spans/BulletPointSpan.java), [`CodeBlockSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/spans/CodeBlockSpan.java) or [`FontSpan`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/main/java/com/android/example/text/styling/renderer/spans/FontSpan.java).
+
+## Testing
+Text parsing is tested with JUnit tests in [`ParserTest`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/test/java/com/android/example/text/styling/parser/ParserTest.java). Span building is tested via Android JUnit tests, in [`MarkdownBuilderTest`](https://github.com/googlesamples/android-text/blob/master/TextStyling-Java/app/src/androidTest/java/com/android/example/text/styling/renderer/MarkdownBuilderTest.java).
+
+
+Getting Started
+---------------
+
+Clone this repository, enter the top level directory and run `./gradlew tasks`
+to get an overview of all the tasks available for this project.
+
+Some important tasks are:
+
+```
+assembleDebug - Assembles all Debug builds.
+installDebug - Installs the Debug build.
+connectedAndroidTest - Installs and runs the tests for Debug build on connected
+devices.
+test - Run all unit tests.
+```
+
+Screenshots
+-----------
+<img src="screenshots/main_activity.png" width="30%" />
+
+Support
+-------
+- Stack Overflow: http://stackoverflow.com/questions/tagged/android-text
+
+If you've found an error in this sample, please file an issue:
+https://github.com/googlesamples/android-text/issues
+
+Patches are encouraged, and may be submitted by forking this project and
+submitting a pull request through GitHub.
+
+License
+--------
+```
+Copyright 2018 The Android Open Source Project
+
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements. See the NOTICE file distributed with this work for
+additional information regarding copyright ownership. The ASF licenses this
+file to you under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations under
+the License.
+```
+
diff --git a/ui/text/TextStyling-Kotlin/README.md b/ui/text/TextStyling-Kotlin/README.md
new file mode 100644
index 0000000..38acd53
--- /dev/null
+++ b/ui/text/TextStyling-Kotlin/README.md
@@ -0,0 +1,73 @@
+Text Styling
+============
+This sample shows how to style text on Android using spans, in Kotlin, using [Android KTX](https://github.com/android/android-ktx).
+
+Introduction
+------------
+## Features
+Parse some hardcoded text and do the following:
+* Paragraphs starting with “> ” are transformed into quotes.
+* Text enclosed in “```” will be transformed into inline code block.
+* Lines starting with “+ ” or “* ” will be transformed into bullet points.
+To update the text, modify the value of `R.string.display_text`.
+This project is not meant to fully cover the markdown capabilities and has several limitations; for example, quotes do not support nesting other elements.
+
+## Implementation
+The text is parsed in the `Parser.parse` method and the spans are created in the `MarkdownBuilder.markdownToSpans` method.
+To see how to apply a span, check out `MarkdownBuilder.buildCodeBlockSpan`. To see how to apply multiple spans on the same string, see `MarkdownBuilder.buildQuoteSpan”. For examples of creating custom spans, see `BulletPointSpan`, `CodeBlockSpan` or `FontSpan`.
+
+## Testing
+Text parsing is tested with JUnit tests in `ParserTest`. Span building is tested via Android JUnit tests, in `MarkdownBuilderTest`.
+
+
+Getting Started
+---------------
+
+Clone this repository, enter the top level directory and run `./gradlew tasks`
+to get an overview of all the tasks available for this project.
+
+Some important tasks are:
+
+```
+assembleDebug - Assembles all Debug builds.
+installDebug - Installs the Debug build.
+connectedAndroidTest - Installs and runs the tests for Debug build on connected
+devices.
+test - Run all unit tests.
+```
+
+Screenshots
+-----------
+<img src="screenshots/main_activity.png" width="30%" />
+
+Support
+-------
+- Stack Overflow: http://stackoverflow.com/questions/tagged/android-text
+
+If you've found an error in this sample, please file an issue:
+https://github.com/googlesamples/android-text/issues
+
+Patches are encouraged, and may be submitted by forking this project and
+submitting a pull request through GitHub.
+
+License
+--------
+```
+Copyright 2018 The Android Open Source Project
+
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements. See the NOTICE file distributed with this work for
+additional information regarding copyright ownership. The ASF licenses this
+file to you under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations under
+the License.
+```
+
