Both are free Until you start making money with your games. You need to buy Unity subscription if you make 100K USD/yr. Unreal charges 5% royalty if your title has made more than 1M USD.
Unity uses C# as the coding language and Unreal uses C++. Both game engines support visual scripting for non-programmers.
Both Epic game's Unreal Engine and Unity support cross platform game publishing. Almost all know platforms are supported by both engines.
If you are someone with a programming background and you already know C++ then Unreal will be easier to learn. In all other cases Unity is much easier to learn than Unreal.
Unreal provides the source code for free but you need to buy the Unity source code, if you want to customize the game engine to your liking.
Unity's 2D game toolkit is much better than Unreal engine. If you are making a 2D game then Unity is the best choice for you.
By default, Unreal Engine's graphics looks better. But once you know Unity you can make your game look equally good.
Unity Asset store has way more assets than Unreal Marketplace. This is really useful for indie game developers who cannot hire professionals.
Unreal Engine takes longer to build a project than Unity. This increases the testing time for each build. This is true for all platfoms.
Both Unity and Unreal have the capability to build any game you want. Just choose one and start making games.