High Level Design (HLD) gives the overall system architecture and functional flow. It defines the main modules and submodules of the system. Low Level Design (LLD) breaks down the application into specific programs, modules, and logic. It defines the internal logic and mapping of each submodule. The LLD provides details needed for developers to code the system based on the high level specifications in the HLD.