Deep learning has effectively solved complicated challenges ranging from large data analytics to human level control and computer vision. However, deep learning has been used to produce software that threatens privacy, democracy, and national security. Deepfake is one of these new applications backed by deep learning. Fake images and movies created by Deepfake algorithms might be difficult for people to tell apart from real ones. This necessitates the development of tools that can automatically detect and evaluate the quality of digital visual media. This paper provides an overview of the algorithms and datasets used to build deepfakes, as well as the approaches presented to detect deepfakes to date. By reviewing the background of deepfakes methods, this paper provides a complete overview of deepfake approaches and promotes the creation of new and more robust strategies to deal with the increasingly complex deepfakes.