diff --git a/History.rdoc b/History.rdoc
index 16d69b40..cc0ef248 100644
--- a/History.rdoc
+++ b/History.rdoc
@@ -1,3 +1,6 @@
+=== Unreleased
+* Move readme to md in #452
+
=== Net::LDAP 0.21.0
* Patch bind success by @HarlemSquirrel in #447
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..ba62d1e0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,100 @@
+# Net::LDAP for Ruby
+
+[](https://badge.fury.io/rb/net-ldap)
+[](https://github.com/ruby-ldap/ruby-net-ldap/actions/workflows/test.yml)
+
+## Description
+
+Net::LDAP for Ruby (also called net-ldap) implements client access for the
+Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
+accessing distributed directory services. Net::LDAP is written completely in
+Ruby with no external dependencies. It supports most LDAP client features and a
+subset of server features as well.
+
+Net::LDAP has been tested against modern popular LDAP servers including
+OpenLDAP and Active Directory. The current release is mostly compliant with
+earlier versions of the IETF LDAP RFCs (2251–2256, 2829–2830, 3377, and 3771).
+Our roadmap for Net::LDAP 1.0 is to gain full *client* compliance with
+the most recent LDAP RFCs (4510–4519, plus portions of 4520–4532).
+
+## Where
+
+- [GitHub](https://github.com/ruby-ldap/ruby-net-ldap)
+- [ruby-ldap@googlegroups.com](http://groups.google.com/group/ruby-ldap)
+
+## Synopsis
+
+See [Net::LDAP on rubydoc.info](https://www.rubydoc.info/github/ruby-ldap/ruby-net-ldap/Net/LDAP) for documentation and usage samples.
+
+## Requirements
+
+Net::LDAP requires a Ruby 3.0.0 compatible interpreter or better.
+
+## Install
+
+Net::LDAP is a pure Ruby library. It does not require any external libraries.
+You can install the RubyGems version of Net::LDAP available from the usual
+sources.
+
+```bash
+gem install net-ldap
+```
+
+Simply require either `net-ldap` or `net/ldap`.
+
+## Extensions
+
+This library focuses on the core LDAP RFCs referenced in the description.
+However, we recognize there are commonly used extensions to the spec that are
+useful. If there is another library which handles it, we list it here.
+
+- [resolv-srv](https://rubygems.org/gems/resolv-srv): Support RFC2782 SRV record lookup and failover
+
+## Develop
+
+This task will run the test suite and the
+[RuboCop](https://github.com/bbatsov/rubocop) static code analyzer.
+
+```bash
+rake rubotest
+```
+
+CI takes too long? If your local box supports
+[Docker](https://www.docker.com/), you can also run integration tests locally.
+Simply run:
+
+```bash
+script/ldap-docker
+INTEGRATION=openldap rake test
+```
+
+Or, use [Docker Compose](https://docs.docker.com/compose/). See `docker-compose.yml` for available Ruby versions.
+
+```bash
+docker-compose run ci-4.0
+```
+
+**CAVEAT:** you need to add the following lines to `/etc/hosts`
+
+```text
+127.0.0.1 ldap.example.org
+127.0.0.1 cert.mismatch.example.org
+```
+
+## Release
+
+This section is for gem maintainers to cut a new version of the gem.
+
+- Check out a new branch `release-VERSION`
+- Update `lib/net/ldap/version.rb` to next version number `X.X.X` following [semver](http://semver.org/).
+- Update `History.rdoc`. Get latest changes with `script/changelog`
+- Open a pull request with these changes for review
+- After merging, on the `master` branch, run `script/release`
+
+## Contributors
+
+See [Contributors.rdoc](Contributors.rdoc).
+
+## License
+
+See [License.rdoc](License.rdoc).
diff --git a/README.rdoc b/README.rdoc
deleted file mode 100644
index 88bdba61..00000000
--- a/README.rdoc
+++ /dev/null
@@ -1,84 +0,0 @@
-= Net::LDAP for Ruby
-{
}[https://badge.fury.io/rb/net-ldap]
-{
}[https://travis-ci.org/ruby-ldap/ruby-net-ldap]
-
-== Description
-
-Net::LDAP for Ruby (also called net-ldap) implements client access for the
-Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
-accessing distributed directory services. Net::LDAP is written completely in
-Ruby with no external dependencies. It supports most LDAP client features and a
-subset of server features as well.
-
-Net::LDAP has been tested against modern popular LDAP servers including
-OpenLDAP and Active Directory. The current release is mostly compliant with
-earlier versions of the IETF LDAP RFCs (2251–2256, 2829–2830, 3377, and 3771).
-Our roadmap for Net::LDAP 1.0 is to gain full client compliance with
-the most recent LDAP RFCs (4510–4519, plus portions of 4520–4532).
-
-== Where
-
-* {GitHub}[https://github.com/ruby-ldap/ruby-net-ldap]
-* {ruby-ldap@googlegroups.com}[http://groups.google.com/group/ruby-ldap]
-
-== Synopsis
-
-See {Net::LDAP on rubydoc.info}[https://www.rubydoc.info/github/ruby-ldap/ruby-net-ldap/Net/LDAP] for documentation and usage samples.
-
-== Requirements
-
-Net::LDAP requires a Ruby 2.0.0 compatible interpreter or better.
-
-== Install
-
-Net::LDAP is a pure Ruby library. It does not require any external libraries.
-You can install the RubyGems version of Net::LDAP available from the usual
-sources.
-
- gem install net-ldap
-
-Simply require either 'net-ldap' or 'net/ldap'.
-
-== Extensions
-
-This library focuses on the core LDAP RFCs referenced in the description.
-However, we recognize there are commonly used extensions to the spec that are
-useful. If there is another library which handles it, we list it here.
-
-* {resolv-srv}[https://rubygems.org/gems/resolv-srv]: Support RFC2782 SRV record lookup and failover
-
-== Develop
-
-This task will run the test suite and the
-{RuboCop}[https://github.com/bbatsov/rubocop] static code analyzer.
-
- rake rubotest
-
-CI takes too long? If your local box supports
-{Docker}[https://www.docker.com/], you can also run integration tests locally.
-Simply run:
-
- script/ldap-docker
- INTEGRATION=openldap rake test
-
-Or, use {Docker Compose}[https://docs.docker.com/compose/]. See docker-compose.yml for available Ruby versions.
-
- docker-compose run ci-2.7
-
-CAVEAT: you need to add the following line to /etc/hosts
- 127.0.0.1 ldap.example.org
- 127.0.0.1 cert.mismatch.example.org
-
-== Release
-
-This section is for gem maintainers to cut a new version of the gem.
-
-* Check out a new branch `release-VERSION`
-* Update lib/net/ldap/version.rb to next version number X.X.X following {semver}[http://semver.org/].
-* Update `History.rdoc`. Get latest changes with `script/changelog`
-* Open a pull request with these changes for review
-* After merging, on the master branch, run `script/release`
-
-:include: Contributors.rdoc
-
-:include: License.rdoc
diff --git a/net-ldap.gemspec b/net-ldap.gemspec
index 077077f2..bd41db70 100644
--- a/net-ldap.gemspec
+++ b/net-ldap.gemspec
@@ -20,11 +20,11 @@ earlier versions of the IETF LDAP RFCs (2251-2256, 2829-2830, 3377, and 3771).
Our roadmap for Net::LDAP 1.0 is to gain full client compliance with
the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
s.email = ["blackhedd@rubyforge.org", "gemiel@gmail.com", "rory.ocon@gmail.com", "kaspar.schiess@absurd.li", "austin@rubyforge.org"]
- s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.rdoc"]
- s.files = Dir["*.rdoc", "lib/**/*"]
+ s.extra_rdoc_files = ["Contributors.rdoc", "Hacking.rdoc", "History.rdoc", "License.rdoc", "README.md"]
+ s.files = Dir["README.md", "*.rdoc", "lib/**/*"]
s.test_files = s.files.grep(%r{^test})
s.homepage = %q{http://github.com/ruby-ldap/ruby-net-ldap}
- s.rdoc_options = ["--main", "README.rdoc"]
+ s.rdoc_options = ["--main", "README.md"]
s.require_paths = ["lib"]
s.required_ruby_version = ">= 3.0.0"
s.summary = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services}