The TLDR answer:

You can use FREENOM to get your domain for free.

Freenom is the world's first and only free domain provider. Our mission is to bring people online and help countries develop their digital economy.

This free is without any term and condition, i.e. you don't need any credit card details to be filled.

Freenom works perfect if you are creating a portfolio website for yourself or if you are planning to do an experimental website for your side project. As per my experience it works just like any other domain service. You can change name servers and use it for free just like any paid service like godaddy, namespace. Here is an example https://a❤tech.tk

Free smiley domain!
Check this free smiley domain hosted using netify https://a❤tech.tk

For example you can use Netlify nameserver so that I can make the most of use of free netlify service to host the website pages. You can update name servers by going into this link, Service ->My Domains -> Management Tools -> Nameservers.

Caveat:

The limitation is you can only get domains ending in .tk, .ml, .ga, .cf, or .gq